面試題55 II 平衡二叉樹

2021-10-03 06:54:08 字數 987 閱讀 5238

分析方法一:先序遍歷每乙個節點,並比較左右子樹高度,如果有》1則返回false

根據上一題求二叉樹深度的啟發,可以先求出左右子樹的深度,然後判斷深度差的絕對值是否大於1,若大於1,則返回false;

class

solution

//求深度的方法

private

:int

getdepth

(treenode* root)

};

但是上面這種方法會重複遍歷結點,如下所示

方法二:後序遍歷

在遍歷某個結點之前就已經遍歷了它的左右子樹;如果遍歷每個節點時就記錄它們的深度,我們就可以一邊遍歷一邊判斷該節點是不是平衡的。

/*後序遍歷解題*/

/*使用後序遍歷的方式遍歷二叉樹的每個節點,那麼在遍歷到乙個節點之前我們就已經

遍歷了它的左右子樹。只要在每個節點的時候記錄它的深度(某一節點的深度等於它到葉節點的路徑的長度)

就可以判斷每個節點是不是平衡的

*/class

solution

bool

isbalanced

(treenode* root,

int&pdepth)

int left=

0,right=0;

if(isbalanced

(root-

>left, left)

&&isbalanced

(root-

>right, right))}

return

false;}

};

面試題55 II 平衡二叉樹

題目 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。方法一 自頂向下,先序遍歷,判斷深度 遞迴判斷每個系是不是平衡二叉樹,即左右結點的高度差在 1 之內,這裡要用到上一題的 求樹的深度。容易想到,但是計算深度的時候,會...

leetcode 面試題55 平衡二叉樹

面試題55 ii.平衡二叉樹 難度簡單27 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,...

平衡二叉樹例題 面試題 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。知識點平衡二叉樹 qiang的思路 平衡二叉樹是指乙個二叉樹的左子樹深度相差不超過1,可以相等或相差為1。為了判斷乙個二叉樹是不是平衡二叉樹,我們只需要計算出左子樹和右子樹的深度,然後進行對比即可。同樣在計算子樹深度的時候,我們又需要對每個節點...