leetcode 110 平衡二叉樹

2021-10-09 15:39:58 字數 1571 閱讀 2032

目錄

一、題目內容

二、解題思路

三、**

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

3

/ \9  20

/  \

15   7

返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

1

/ \2   2

/ \3   3

/ \4   4

記錄左右子樹的深度,葉節點深度為1,如果累計高度差大於1,則返回小於0的數(這裡取-1)。

若兩棵子樹有乙個或兩個返回負值,則其父親也為負。

最後檢驗root的高度,小於0則false,大於等於0為true。

# 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 dfs(root):

if root is none:

return 0

lh = dfs(root.left)

rh = dfs(root.right)

if lh >= 0 and rh >= 0 and abs(lh - rh) <= 1:

return 1 + max(lh, rh)

else:

return -1

return dfs(root) >= 0

if __name__ == '__main__':

a = treenode(3)

a.left = treenode(9)

a.right = treenode(20)

a.right.left = treenode(15)

a.right.right = treenode(7)

s = solution()

ans = s.isbalanced(a)

print(ans)

leetcode 110 平衡二叉樹 平衡二叉樹

leetcode 110 平衡二叉樹 平衡二叉樹要求所有節點的左右子樹的高度差小於1,因此,只需在遍歷的時候返回其左右子樹的深度。definition for a binary tree node.public class treenode treenode int val treenode int...

LeetCode110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...

LeetCode 110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...