判斷一棵二叉樹是否為平衡二叉樹

2021-08-17 19:55:51 字數 832 閱讀 4616

1.先給出樹節點資訊

typedef struct treetree,* bitree;
2.原理

判斷一棵樹是否為平衡二叉樹,要滿足每個節點的左右子樹的高度之差的絕對值不大於1。

因此,我們這裡可以比較每個節點的左右字數高度,判斷他們差的絕對值是否滿足平衡二叉樹的條件即可

3.演算法

求二叉樹高度演算法

int length_tree(bitree t)

if(t!=null)

return 1+max(length_tree(t->lchild),length_tree(t->rchild)));  //遞迴求節點高度

else

return 0;    //空樹返回0

然後再就是判斷每個節點的左右子樹高度操作了

int judge_tree(bitree t)

int llength,rlength;      //定義左右節點高度

if(t!=null)

llength=length_tree(t->lchild);

rlength=length_tree(t->rchild);

if(abs(llength-rlength)>0)     //判斷絕對值是否大於1

return judge_tree(t->lchild)*judge_tree(t->rchild);          //注意這裡是乘法,只要出現0,就不符合條件

else

return 1;          //t為空返回1,這個也符合條件

4.以上差不多已經可以實現判斷操作了,如要編寫成程式,自己稍加修改下即可。

判斷一棵二叉樹是否為平衡二叉樹

題目描述 對輸入的一棵樹,判斷是否為二叉樹。step1 對給定二叉樹的所有節點進行遍歷 step2 將每乙個節點都作為根節點,判斷其左右孩子的深度 step3 使用unordered map記錄下每個節點的深度,最後遍歷每個節點,判斷左右子樹深度之差是否小於等於1 如下 這個直接執行可能有些問題,我...

判斷一棵二叉樹是否是平衡二叉樹

思路 遞迴方式判斷,返回的資訊應該有兩個 1 這棵樹是否是平衡的 2 這棵樹的高度為多少 public class isbalancedtree public static class returndata public static returndata process node head ret...

如何判斷一棵二叉樹是否是平衡二叉樹

平衡二叉樹的定義,如果任意節點的左右子樹的深度相差不超過1,那這棵樹就是平衡二叉樹。演算法思路 先編寫乙個計算二叉樹深度的函式getdepth,利用遞迴實現 然後再遞迴判斷每個節點的左右子樹的深度是否相差1 static int getdepth binnode root 注意這裡的 1,對應於ro...