二叉樹 顏麓

2021-10-13 21:49:28 字數 2975 閱讀 9477

1、樹的定義

樹是⼀種⾮線性的資料結構,資料邏輯中之所以會引⼊「樹」這個東⻄,是借助 了⽣活中樹的「分⽀」的概念。邏輯資料中的樹可⽤於描述⼀種類似組織結構的 關係。 樹是⼀種資料結構,它是由n(n>=1)個有限結點組成⼀個具有層次關係的集合。 把它叫做「樹」是因為它看起來像⼀棵倒掛的樹,也就是說它是根朝上,⽽葉朝 下的。

⼆叉樹是每個結點最多有兩個⼦樹的樹結構。它有五種基本形態:⼆叉樹可以 是空集;根可以有空的左⼦樹或右⼦樹;或者左、右⼦樹皆為空。

2、樹的特點:

每個結點有零個或多個⼦結點;沒有⽗結點的結點稱為根結點;每⼀個⾮根結 點有且只有⼀個⽗結點;除了根結點外,每個⼦結點可以分為多個不相交的⼦樹;

結點: 樹中的元素 及其⼦樹

孩⼦/雙親: ⼀個結點的後繼結點叫該結點的孩⼦, 該結點叫 孩⼦的雙親 結點。

結點的度:該結點分⽀的數量 ,⽐如a節點的度為3,c節點的度為1

葉⼦: 度為0的結點,

結點的層次: 從根到該結點的層數(根的層次為1);

樹的⾼度(深度):樹中結點層次的最⼤值

根節點 :沒有⽗結點的結點稱為根結點

當n=0時稱為空樹。在任⼀⾮空樹中:①有且僅有⼀個稱為該樹之根的節點;② 除根結點之外的其餘節點可分為有限個互不相⼲的集合,且其中每⼀個集合本 身⼜是⼀棵樹,稱為根的⼦樹。

⼆叉排序樹

⼆叉排序樹(binary sort tree)⼜稱⼆叉查詢(搜尋)樹(binary search tree)。 其定義為:⼆叉排序樹或者是空樹,或者是滿⾜如下性質的⼆叉樹: ①若它的左⼦樹⾮空,則左⼦樹上所有結點的值均⼩於根結點的值; ②若它的右⼦樹⾮空,則右⼦樹上所有結點的值均⼤於根結點的值; ③左、右⼦樹本身⼜各是⼀棵⼆叉排序樹

建立二叉樹

第一次插入的數:5 4 2 8 9 1

第二次插入的數:3 6 7 2 1

⼆叉樹第i層上的結點數⽬最多為2i-

1(i>=1)

深度為k的⼆叉樹⾄多有2k-

1個結點(k>=

1)

1、bst_tree *bst_tree_insert(bst_tree *root,int value) //插入操作

2、void bst_print(bst_tree *root)//中序遍歷

//二叉樹 

#include

#include

struct bi_search_tree

;typedef

struct bi_search_tree bst_tree;

/*插入操作,value是待插入的值*/

bst_tree *

bst_tree_insert

(bst_tree *root,

int value)

while

(node!=

null

)else

if(node->key>=value)

}while

(node!=

null

)else

else}}

//建立新節點

bst_tree *child =

(bst_tree *

)malloc

(sizeof

(bst_tree));

//child存放跟節點以外的節點//child存放新建立節點

child->key = value;

child->left =

null

; child->right =

null;if

(value > parent->key)

else

return root;

}/*中序輸出bst樹*/

void

bst_print

(bst_tree *root)

bst_print

(root->left)

;printf

(" %d "

, root->key)

;bst_print

(root->right);}

intmain()

; bst_tree *root=

null

;for

(int i=

0;i<

6;i++

) root=

bst_tree_insert

(root,3)

; root=

bst_tree_insert

(root,6)

; root=

bst_tree_insert

(root,7)

; root=

bst_tree_insert

(root,2)

; root=

bst_tree_insert

(root,1)

;bst_print

(root)

;/*中序遍歷*/

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...