劍指Offer38 平衡二叉樹

2021-09-05 09:57:08 字數 856 閱讀 7694

思路:

判斷是否是平衡二叉樹,即判斷任何乙個節點的左子樹和右子樹的高度差的絕對值小於等於1。最直接的做法,遍歷每個結點,借助乙個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷。

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def isbalanced_solution(self, proot):

# write code here

if proot == none:

return true

if abs(self.treedepth(proot.left)-self.treedepth(proot.right)) > 1:

return false

return self.isbalanced_solution(proot.left) and self.isbalanced_solution(proot.right)

def treedepth(self, proot):

# write code here

if proot == none:

return 0

nleft = self.treedepth(proot.left)

nright = self.treedepth(proot.right)

return max(nleft+1,nright+1)

劍指offer38 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。思路 平衡二叉樹 balanced binary tree 具有以下性質 它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。判斷兩邊高度,我這裡想著用誰子樹沒了就會在和左子樹的比較中比較會等於 1,然後...

劍指offer 38 二叉樹的深度

題目 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。思路 求深度,第一次能想到的方法就是遞迴,但是除了遞迴還有層次遍歷,本文提供遞迴和層次遍歷兩種解法。遞迴思想就是 求左右子樹,然後深度各加一,再比較哪個大,然後返回哪個。層次...

劍指offer 38 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。時間限制 1秒 空間限制 32768k 熱度指數 122264 廣度遍歷,佇列儲存結點,變數lh儲存上一行的最後乙個結點的位置,變數num儲存已經入隊的結點數量 當訪問的結點為上一...