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