判断一棵二叉树是否为平衡二叉树
1.先給出樹節點信息
typedef struct tree{struct tree *lchild;struct tree *rchlid;int data; }tree,* 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 0;}
? ? ? ? ? return judge_tree(T->lchild)*judge_tree(T->rchild); ? ? ? ? ?//注意這里是乘法,只要出現0,就不符合條件
? ? ?}
? ? else
? ? ? ? ? ? ?return 1; ? ? ? ? ?//T為空返回1,這個也符合條件
}
4.以上差不多已經可以實現判斷操作了,如要編寫成程序,自己稍加修改下即可。
總結
以上是生活随笔為你收集整理的判断一棵二叉树是否为平衡二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用JAVA语言创建链表的方法
- 下一篇: Git代码管理常用命令操作