#include
#include
/*平衡二叉樹 必須滿足的兩個條件:
1)、必須是搜尋二叉樹
2)、每個節點的左子樹和右子樹的高度差最多為1 */
typedef
struct treenodetreenode;
/*二叉樹的深度*/
intdeeptree
(treenode * node)
else
return0;
}/*判斷是否是平衡二叉樹 遞迴判斷*/
intisbalence
(treenode *node)
/*中序遍歷*/
void
midsearch
(treenode *node)
}/*插入資料 常規寫法 因為涉及到頭結點的更換,用** */
void
insertnode
(treenode *
*node,
int data)
else
/*反之,不是空樹 不是空樹,就不涉及根節點的更換,所以,為了書寫簡便,用tep代替(*node)*/
tep = tep->rightnode;
/*執行完一次判斷,通過while(),繼續下一次的判斷*/
}else
tep = tep->leftnode;}}
}}/*插入資料 遞迴寫法*/
void
insertnode1
(treenode *
*node,
int data)
else
}/*銷毀樹 遞迴實現*/
void
destroy
(treenode *node)
}int
main
(void);
int i,num =9;
for(i=
0;i)/*中序遍歷*/
midsearch
(node)
; deep =
deeptree
(node)
;printf
("deep = %d\n"
,deep)
;printf
("\n");
ret =
isbalence
(node)
;printf
("%d\n"
,ret);if
(ret ==1)
printf
("balance \n");
else
printf
("fail \n");
/*銷毀樹 遞迴實現*/
destroy
(node)
;return0;
}
判斷平衡二叉樹
演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於1。1.計算節點的高。通過遞迴,求出左右子樹的高度,當前節點的高度,最大的那乙個 1。int getheight treenode root 2.通過遞迴的方法計算左子樹和右子樹的樹高之差是否有小於1的,有就直接返回false.publ...
判斷平衡二叉樹
package com.jsp.tree 判斷是否是平衡二叉樹 author jiangshipan 任何乙個節點 左子樹和右子數高度差小於1 以每乙個節點為頭的樹都是平衡的,則這個樹平衡 可能 1.左樹不平 2.右樹不平 3.左或右高 整棵樹 public class isbalancedtree...
判斷平衡二叉樹
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。最直接的做法,遍歷每個節點,借助乙個獲取樹深度的遞迴函式,根據該節點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷 pubic class solution private intmaxdepth treenode root 這種做法有很明顯...