分析方法一:先序遍歷每乙個節點,並比較左右子樹高度,如果有》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。為了判斷乙個二叉樹是不是平衡二叉樹,我們只需要計算出左子樹和右子樹的深度,然後進行對比即可。同樣在計算子樹深度的時候,我們又需要對每個節點...