JZ39 劍指offer 平衡二叉樹

2021-10-16 13:37:53 字數 1055 閱讀 4547

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹

平衡二叉樹(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...