資料結構 二叉樹初階學習心得

2021-10-19 13:25:53 字數 1468 閱讀 8662

struct bintreenode

遞迴要點:

這個遞迴函式的功能是什麼,怎樣呼叫這個函式,即設計好遞迴函式的返回值和引數列表

什麼時候應該結束這個遞迴,它的邊界條件(出口)是什麼?

在非邊界情況時,怎樣從第n層轉變成第n+1層 (遞推公式)

注:

遞迴思想最重要的一點就是:不要去關函式的內部細節【避免鑽牛角尖,容易混】,只需要關注函式作用以及輸入輸出即可。給定乙個二叉樹,找出其最大深度。

例項:3

/ 9 20

/ 15 7

最大深度 3

遞迴實現:

1.函式功能->找出最大深度;返回值->最大深度(int型);引數->節點指標

2.邊界:當root為null時,返回高度為0;

3.獲取最大高度->左子樹與右子樹中較大值+1

int

maxdepth

(treenode *root)

}

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1 。

解題思路:

邊界條件:當成功遞迴到葉子結點後為真,

單層遞迴:左右子樹的高度差是否大於1即小於2;

然後遞迴

bool isbalanced

(struct treenode* root)

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。

示例 1:

給定的樹 s:

3

/ \

4 5

/ 1 2

給定的樹 t:4/

1 2返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。

解題思路:

邊界條件:

【判斷子樹:即從某一節點開始,子樹與該根節點對應的數相等

遞迴:根節點判斷,然後從左右子樹判斷】

空樹為任意樹的子樹,為真;

當遞迴到空節點是返回false;

相同樹是特殊的子樹

bool _issametree

(struct treenode*s,

struct treenode*t)

bool issubtree

(struct treenode* s,

struct treenode* t)

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

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...

資料結構 二叉樹

1.二叉樹 二叉樹是一種特殊結構的樹,每個節點中最多有兩個子節點,如圖1所示 圖1 二叉樹 在圖1中的二叉樹裡,a c有兩個子節點,b d有乙個子節點。對於二叉樹還有圖2中的以下情況 圖2 二叉樹的特殊情況 在博文中還介紹了滿二叉樹和完全二叉樹還有其他的特殊二叉樹。2.二叉樹的實現 有兩種實現方式,...