資料結構C(二叉樹6 2 1)

2021-10-10 08:30:07 字數 1351 閱讀 3884

定義:一顆二叉排序樹是一棵二叉樹,在不為空時,滿足3條性質。

1.左子樹所有結點的鍵值小於根結點的鍵值(注意是所有結點)

2.右子樹所有結點的鍵值大於根結點的鍵值

3.左,右子樹也是二叉樹

即一顆二叉排序樹應該嚴格遵循上面3個條件。

二叉樹操作

查詢find(若找到,返回結點指標,否者返回null)

struct treenode*

find

(treenode *t,

int x)

最小的值一定在左子樹中,所以遞迴查詢左子樹。

當然找最大同理,一直遞迴查詢右子樹。

重點:二叉樹的輸入insert操作

演算法:沿著樹進行查詢,如果找到x已存在樹t中,則不做任何操作

否則,將x插入到查詢路徑的最後一站(就是空樹)

最後,生成葉結點替換這最後一站

struct treenode*

insert

(struct treenode*t,

int x)

else

if(xdata)

else

if(x>t->data)

return t;

重點:二叉樹的刪除操作

如果樹中沒有x,不做任何操作

因為刪除根結點後可能會發生變化,所以函式必須返回新的根結點指標

存在三種刪除情況

葉結點有乙個兒子

有兩個兒子

葉結點刪除比較簡單,主要討論有乙個兒子與有兩個兒子的情況。

乙個兒子:我們主要找到要刪除的結點後,將其他點按照性質嚴格鏈結組成新樹。

替換上位,性質連線

struct treenode*

delete

(struct treenode*t,

int x)

else

}return t;

}

後續更新樹,二叉樹,森林的想換轉換與asl演算法。

C 資料結構(樹 二叉樹)

樹的定義 樹是你 n 0 個節點的有限集t t為空是空樹 非空樹具有兩個條件。有且僅有乙個根節點作為樹根 其餘節點可分為m個互不相交的子集t1,tm。其中每乙個子集本手又是一顆樹,稱其為跟節點的子樹。遞迴思想 樹的二元組表示 t d,r d 樹t中的節點集合,r 樹中的節點關係。二元組另外一種表示 ...

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...

《資料結構》 二叉樹

二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...