二叉樹平衡檢查

2021-07-22 05:58:07 字數 841 閱讀 5313

題目描述

實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。

給定指向樹根結點的指標treenode* root,請返回乙個bool,代表這棵樹是否平衡。

思路一:

用遞迴來遍歷計算每個節點左右子樹的高度,最後比較差值。時間複雜度o(n logn)。

public

boolean

isbalance(treenode root) else

}public

intgetheight(treenode root)

思路二:

減少對getheight的呼叫,一次遍歷整棵樹,在遍歷的過程中就判斷數是否是平衡的,如果不是返回-1,若是平衡的返回數的高度。時間複雜度o(n),空間複雜度o(h),其中h為樹的高度

public

boolean

isbalance(treenode root) else

}public

intcheckheight(treenode root)

int leftheight = checkheight(root.left);

if (leftheight == -1)

int rightheight = checkheight(root.right);

if (rightheight == -1)

int heigthdiff = leftheight - rightheight;

if (math.abs(heigthdiff) > 1) else

}

二叉樹平衡檢查

實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中任意乙個結點,兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。樹結構自身就是遞迴定義,很多問題都可以利用遞迴巧妙地實現,對於這道題,關鍵點有兩處 求結點左右子樹高度差 遍歷樹...

二叉樹平衡檢查

題目描述 實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。coding utf 8 class treenode def init self,x self....

C 二叉樹平衡檢查

關於二叉樹與圖 1.從無到有實現二叉樹和圖 2.在二叉樹和圖中檢索 查詢target value 二叉搜尋樹 binary search tree 所要滿足的條件 對於二叉搜尋樹中任意乙個節點 它的左子樹中的所有數值都比當前節點的關鍵碼小 它的右子樹中的所有節點的關鍵碼都比當前節點的關鍵碼大 二叉搜...