第五
章——樹(生命不息,種樹不止)
無序樹:樹中任意節點的子結點之間沒有順序關係,這種樹稱為無序樹,也稱為自由樹;
有序樹:樹中任意節點的子結點之間有順序關係,這種樹稱為有序樹;
二叉樹:每個節點最多含有兩個子樹的樹稱為二叉樹;
完全二叉樹
滿二叉樹
霍夫曼樹:帶權路徑最短的二叉樹稱為哈夫曼樹或最優二叉樹;
在二叉樹遍歷方面有分為先序遍歷,中序遍歷,和後序遍歷。
插入操作:
1view codestruct
node2;
78 pnode bt =null;910
11//
遞迴方法插入節點
12 pnode insert(pnode root, int
x)13
21else
if(x < root->val)
24else
27return
root;28}
2930
//非遞迴方法插入節點
31void insert_bst(pnode q, int
x)32
41while(q->lchild != p && q->rchild !=p)
46else
49}
50else
54else57}
58}59return
;60 }
刪除操作:
1view codebool delete_bst(pnode p, int x) //
返回乙個標誌,表示是否找到被刪元素
2
10else
if(x < p->val)
14else18}
19if(p == null)
2223
if(p->lchild == null && p->rchild == null)
27else
if(q->lchild ==p)
30else
33free(p); //
釋放節點p 34}
35else
if(p->lchild == null || p->rchild == null)
40else
43}
44else
48else
if(q->lchild == p && p->rchild)
51else
if(q->rchild == p && p->lchild)
54else57}
58free
(p);59}
60else
67 p->val = s->val; //
把節點s的值賦給p
68if(t ==p)
71else
74free
(s); 75}
76return
find;
77 }
查詢操作:
1 pnode search_bst(pnode p, intx)2view code8else
if(x < p->val)
11else14}
15if(p ==null)
18return
p;19 }
而在這次新學了queue標頭檔案,在此**,都是乾貨cppreference.com來玩呀!
而在深入虎穴中,陣列越界問題真的是神魔啊
1int input(node *&a)2
20}2122
//找出根在陣列的下標
23for(i=1;i<=n;++i)
24if (!vi[i]) break
;
25return
i;26 }
5 6 第五章小結
5.6 第五章小結 在這一章中,我們討論了值,討論了有關函式的詳細資訊,突出了乙個事實,在 f 中,函式就是值!我們看到幾個建立不同的值和對應組合型別的方法。從討論元組開始,給我們乙個儲存多個值為乙個的方法。接下來,我們討論了差別聯合,使我們能夠表示包含多種選項的值。宣告差別聯合時,指定哪些情況,然...
第五章學習小結
1 第五章主要學習了與樹相關的知識,從二叉樹拓展到一棵普通的樹,再從一棵普通的樹拓展到哈夫曼樹,再從樹拓展到森林的概念。5 1節學習了樹和二叉樹的定義,對節點,根節點,葉子結點,深度,度等概念進行了初步的了解。5 4節了解了與二叉樹相關的一些性質,其中引出了完全二叉樹與滿二叉樹的概念,從這一節開始也...
第五章學習小結
一 小結 1.二叉樹 定義與性質 1 二叉樹有五種基本形態 2 在二叉樹的 第 i 層上至多有 2 i l 個結點 i 1 3 深度為 k 的 二叉樹至多有 2 k 1 個結點 k 1 4 葉子結點數 度為2結點數 1 5 滿二叉樹是完全二叉樹的一種 還有更常見的非完全二叉樹 二叉樹的儲存與遍歷 1...