面試題55 II 平衡二叉樹

2021-10-12 19:55:26 字數 1003 閱讀 3760

題目:輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。

方法一:自頂向下,先序遍歷,判斷深度

遞迴判斷每個系是不是平衡二叉樹,即左右結點的高度差在 1 之內,這裡要用到上一題的**,求樹的深度。

容易想到,但是計算深度的時候,會產生大量的重複計算,時間複雜度較高

class

solution

if(math.

abs(

height

(root.left)

-height

(root.right)

)<=1)

return

false;}

// 求樹的深度

intheight

(treenode root)

return math.

max(

height

(root.left)

,height

(root.right))+

1;}}

方法二:自底向上

思路:對二叉樹進行後續遍歷,從底到頂返回子樹深度,如果子樹不是平衡二叉樹,直接返回進行剪枝

class

solution

intrecur

(treenode root)

int left =

recur

(root.left);if

(left ==-1

)int right =

recur

(root.right);if

(right ==-1

)return math.

abs(left - right)

<

2? math.

max(left, right)+1

:-1;

}}

面試題55 II 平衡二叉樹

分析方法一 先序遍歷每乙個節點,並比較左右子樹高度,如果有 1則返回false 根據上一題求二叉樹深度的啟發,可以先求出左右子樹的深度,然後判斷深度差的絕對值是否大於1,若大於1,則返回false class solution 求深度的方法 private int getdepth treenode...

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。為了判斷乙個二叉樹是不是平衡二叉樹,我們只需要計算出左子樹和右子樹的深度,然後進行對比即可。同樣在計算子樹深度的時候,我們又需要對每個節點...