求二叉樹高度的幾種方法!!!!!!!

2021-09-05 01:27:50 字數 1011 閱讀 3176

如題,我搜了搜求二叉樹,搜到好多方法,我挑一下我覺得幾個簡單的遞迴求高度的方法。

得先說一下我建樹的習慣:

struct tree

;第一種:

int h1(tree *root)

}關於這個+1是幹啥的。首先我再提醒一下這是遞「歸」的思想。

意思如果根有孩子,當孩子」歸「的時候帶回來個1。 自身再比較一

下左孩子帶過來的1多還是右孩子帶過來的1多。如果沒孩子的話,

他孩子帶回來的就是0,但是他本身算一層,所以+1;

int h1(tree* root)

反正我是被感動了,兩行結束。

第二種:

int max1 = 0;

int h2(tree *root, int depth)

if(depth > max1) max1 = depth;

因為不知道那個孩子延伸的最深,所以就判斷一下最深是多少。

return max1; 返回最深的值就行。

}對於這個初始是輸入depth = 1就行:也就是 h2(root, 1);

更新!!!!!!

寫到平衡二叉樹,發現新的求高度的方法,我給一下新的方法。

上邊的兩種方法有個缺點,每次求乙個點的高度都得從新遞迴求,如果我們建立二叉樹的時候就把每個結點的高度求出來,然後再插入新的結點時,我們就可以呼叫原來那些已經求過的結點的高度了,不用從新遞迴求過來一遍了!!!

關於樹的高度,深度,結點的高度深度,不同的樹有不同的定義,推薦個分析:

struct tree

;int hi(tree *root)

建立二叉樹時在return root前加一句東西,也就是下面的:

root->high = max( hi(root->lboy), hi(root->rgirl) ) + 1;

return 0;

我醒來時,陽光在草地上飛揚。

求二叉樹高度

函式介面定義 int getheight bintree bt 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 要求函式返回給定二叉樹bt的高度值。裁判測試程式樣例 include...

求二叉樹高度

本題要求給定二叉樹的高度。函式介面定義 int getheight bintree bt 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 要求函式返回給定二叉樹bt的高度值。裁判測...

求二叉樹高度

題目來自於pta 函式介面定義 int getheight bintree bt 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 要求函式返回給定二叉樹bt的高度值。裁判測試程式樣...