国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++數據結構學習:二叉樹(4)

2019-11-17 05:03:06
字體:
來源:轉載
供稿:網友
  才剛開了個頭,就要說再見了——在樹這里,除了二叉樹,別的都還沒有講。為什么可以總結了呢?因為前面已經涉及到了樹的兩個基本用途,而假如再講B+、B-,就不能不提到搜索,假如是勝者樹就不能不提到排序。為此,把這部分放到后面。
我前面所做的努力,只是讓你有個基本概念,什么時候記得用樹。

  樹的兩個基本用途,可以用物質和精神來比喻。
  
  一個用途是做為數據儲存,儲存具有樹結構的數據——目錄、族譜等等。為了在實際上是線性的儲存載體上(內存、磁盤)儲存非線性的樹結構,必須有標志指示出樹的結構。因此,只要能區分根和子樹,樹可以采取各種方法來儲存——多叉鏈表、左子女-右兄弟二叉鏈表、廣義表、多維數組。由于操作的需求,儲存方法并不是隨意選取的。比如,在并查集的實現上,選取的是雙親鏈表。
  
  一個用途是做為邏輯判定,此時會經常聽到一個名詞——判定樹。最常用的結構是二叉樹,一個孩子代表true,一個孩子代表false。關于多叉判定樹,有個例子是求8皇后的全部解——這個連高斯都算錯了(一共是92組解,高斯最開始說76組解),我們比不上高斯,但是我們會讓computer代勞。
  
  就像哲學界到現在還糾纏于物質和精神本源問題,實際上在樹這里也是如此。有些情況下,并不能區分是做為儲存來用還是做為判定來用,比如搜索樹,既儲存了數據,還蘊涵著判定。
  
  和后面的圖相比,樹更基本,也更常用。你可以不知道最短路徑怎么求,卻每時每刻都在和樹打交道——看看你電腦里的文件夾吧。

更多文章 更多內容請看C/C++技術專題  數據結構  數據結構教程專題,或
  最后,附帶一個求N皇后的全部解的程序。
  
  #include
  
  #defineN8
  
  intlayout[N];//布局
  
  intkey=0;
  
  intjudge(introw,intcol)//判定能否在(row,col)放下

  {
  
  inti;
  
  for(i=0;i   
  {

  if(layout[i]==col)return0;//同一列
    
  if(i-layout[i]==row-col)return0;//同一條主對角線
  
  if(i+layout[i]==row+col)return0;//同一條副對角線
  
  }
  
  
       更多文章 更多內容請看C/C++技術專題  數據結構  數據結構教程專題,或   return1;
  
  }
  
  voidlay(introw)//在row行上放Queen
  
  {
  
  inti;
    
  if(row==N)//放完N個Queen輸出布局
    
  {
    
    
  for(i=0;i   
  }

  
  else
  
  {
  
  for(i=0;i   
  {
  
  layout[row]=i;
  
  if(judge(row,i))lay(row+1);
  
  }
  
  }
  
  }
  
  intmain()
    
  {
  
  lay(0);

  return0;
  
  }
  
  
       更多文章 更多內容請看C/C++技術專題  數據結構  數據結構教程專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆丰市| 瓦房店市| 兴山县| 射阳县| 综艺| 会东县| 政和县| 大埔县| 文昌市| 大同县| 河池市| 宕昌县| 顺平县| 肇源县| 唐山市| 大化| 渭南市| 天门市| 瑞安市| 无为县| 宽甸| 宁远县| 抚顺县| 新化县| 绿春县| 江源县| 临泽县| 武平县| 淮北市| 建始县| 桦南县| 高淳县| 通化市| 绥滨县| 马尔康县| 西青区| 鹰潭市| 泸溪县| 紫阳县| 宝清县| 皋兰县|