題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹
平衡二叉樹(balanced binary tree),具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
class
solution
intdepth
(treenode* root)
};
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
isbalanced
(self, root: treenode)
->
bool
:def
depth
(head):if
not head:
return
0 l = depth(head.left)
if l ==-1
:return-1
r = depth(head.right)
if r ==-1
:return-1
d =abs(l - r)
if d >1:
return-1
return
max(l, r)+1
return depth(root)!=-
1
思路:
使用depth函式遞迴呼叫,空節點返回0值,遞迴呼叫左右子節點,如果有-1,則返回-1,然後計算左右子節點的差值,超過1也返回-1。最後沒有返回-1,則返回左右子節點較大值+1。
JZ39 平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹。題解 平衡樹 balance tree,bt 指的是,任意節點的子樹的高度差都小於等於1。求出每顆子二叉樹的子樹高度差,如果大於1那就不是平衡二叉樹,反之一定是。求子樹高度差 pub...
39 劍指offer 平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。解題思路 平衡二叉樹,對於每個根節點左右子樹高度差小於等於1 1 class solution 12bool isbalanced solution treenode proot 17int nleft treedepth proot left...
劍指offer 39 平衡二叉樹
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。首先,什麼是平衡二叉樹?如果二叉樹中任意結點的左右子樹深度相差不超過1,那麼它就是平衡二叉樹。最直接的做法,遍歷每個結點,借助乙個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷。public class sol...