求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)
生活随笔
收集整理的這篇文章主要介紹了
求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這段時間跟二叉樹杠上了,接下來還有許多二叉樹的題目,雖然已經做了不少了,大多題目都涉及到了遞歸,也挺好,剛好有機會練習一下遞歸,但是遇到新的題目還是有點力不從心,還需要看參考答案,真希望有一天像湯神一樣:這道題我拿到手上就會做!
第二十五天——第二十五題(平衡二叉樹)
看題目!
給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過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返回 false
python解答之一:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = Noneclass Solution(object):def isBalanced(self, root):""":type root: TreeNode:rtype: bool"""if not root:return Truereturn abs(self.height(root.right)-self.height(root.left))<2 and self.isBalanced(root.left) and self.isBalanced(root.right)# 求高度def height(self, node):if not node:return 0return 1+max(self.height(node.right),self.height(node.left))代碼解釋:
1.首先判斷根節點為空時的情況(這一步已經習以為常了)
2.不為空則根據輸入是否滿足return后的條件來決定返回True或者False。
3.return后的條件為:
條件1:左右兩側的高度差小于2(也就是說高度差是1或者0都是可以的)
條件2:利用遞歸,去判斷根節點左右兩邊的葉子結點他們的子節點是否滿足條件1,以此往樹下走,直到走到頭。
4.條件1中用到了求二叉樹高度的函數,所以在最后另外在定義一下height函數即可。
有時候風扇比空調更適合你喲~
總結
以上是生活随笔為你收集整理的求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端wxml取后台js变量值_微信小程序
- 下一篇: java排队系统模型,MMC排队系统模型