ps:今天上午,非常鬱悶,有很多簡略基礎的問題搞得我有些迷茫,哎,**幾天不寫就忘。目前又不當coo,還是得用心記**哦!
二叉樹是資料結構的最主要的內容之一,之所以引入二叉樹,是因為精良的資料結構非常有助於資料的排序,查詢等操作,也是在空間和效率上做個平衡!!
二叉樹的定義:每個節點至多有倆顆子樹(即二叉樹中不存在度大於2的節點),並且,二叉樹的子樹有閣下之分,其次序不能恣意顛倒。(摘自《資料結構 c語言》嚴蔚敏 版,如有維權,可傳送至:[email protected],本人將當即刪除)
形如:
節選自:《資料結構》 嚴蔚敏 圖6.4
二叉樹的分類:滿二叉樹,完全二叉樹,一般二叉樹(暫且列舉簡略的)。
(a)滿二叉樹,,根節點的度為1,葉節點的度為0,其餘節點的度為2.
(b)完全二叉樹:懂得上很簡略,在滿二叉樹的基礎上,去掉序號靠後的節點,注意必須從倒數第乙個點算起。b 就是,而c,d 都不是。因此c,d只是一般的二叉樹。
二叉樹的幾個主要術語: 度,深度,根節點,雙親,葉節點,子樹。
度:每個節點可以有的子節點的個數。深度:層數;根節點:最頂層的那個點;雙親:其實是乙個節點,如(a)中4和5的雙親是2;葉節點:度為0的節點;子樹:如(a),做標記的部份是1的子樹。
樹的相干性質:1,第i層上至多有2的(i-1)次方個節點;
2,深度為k的二叉樹至多有2^k-1個節點;
3,度為0 的節點數n0,度為2的節點數n2,則n0=n2+1;
4,主要是關於節點之間的位置關係,囉嗦一堆,其實很簡略,就不再貼出來了。
樹的建立和遍歷:
包含前序 中序 和後序 ,其實就是元素拜訪的次序,比如如上圖 (d):前序 124536 , 中序:425136 , 後序: 452631。簡略畫畫就能夠了。
**如下:
每日一道理
生命,是一場漫長的棋局。這盤棋沒有獵獵西風,沒有四起狼煙,只有在取捨和進退中抉擇。只有像棋中的小卒那樣,勇往直前,毫不退縮沿著溝溝坎坎的人生之路,艱難而執著的求索,前進,才會譜寫人生最壯麗的強者之歌。
/*
email:[email protected]
*/#includeusing namespace std;
struct tnode
;typedef tnode* bitree;
void initbitree(bitree& t)
} }//前序拜訪
void preorder(bitree & t)
}//中虛拜訪
void inorder(bitree &t)
}//後續拜訪
void postorder(bitree &t){
if(t)
{ postorder(t->lchild);
postorder(t->rchild);
cout<
輸入:124##5##3#6
可見,與之前手工推導結果一致,注意一定不要漏了 #,否則 不但輸出結果有誤,而且 不能畸形如期執行
文章結束給大家分享下程式設計師的一些笑話語錄: 3g普不普及現在已經不是看終端了,而是看應用,有好的,便宜實用的應用,花1000多買個能用的智慧型手機應該不是什麼難事。反過來說,你200元拿乙個智慧型手機,沒有好的應用,看個電影要幾十元,也是沒人用3g。
--------------------------------- 原創文章 by
二叉樹和節點
---------------------------------
完全二叉樹節點數
題目 給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o n 的解法。方法 1 遞迴o n 演算法 int nodenum struct treenode head return 1 nodenum head left nodenum hea...
完全二叉樹節點數
給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o n 的解法。package main import nc tools type treenode struct param head treenode類 return int整型 func ...
二叉樹節點數量關係
node 表示一棵樹節點總數量 node1 表示度為1的節點數量 node2 表示度為2的節點數量 leaf 表示葉子節點的數量 line 表示一棵樹中莖 也就是兩個節點之間的連線 的數量 顯然 node 1 line node node1 node2 leaf line node1 2 node2...