平衡二叉樹的判斷(C語言)

2021-10-09 11:09:56 字數 1435 閱讀 8855

#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 這種做法有很明顯...