題目描述:
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
解題方案:
這裡我取了個巧,直接用val儲存節點的層數。
# -*- coding:utf-8 -*-
# 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 not proot:
return true
if not (self.isbalanced_solution(proot.left) and self.isbalanced_solution(proot.right)):
return false
if not proot.left and not proot.right:
proot.val = 1
return true
left, right = 0, 0
if proot.left:
left = proot.left.val
if proot.right:
right = proot.right.val
if abs(left - right) > 1:
return false
proot.val = max(left, right) + 1
return true
如果不改變val值,需要重寫遞迴函式:
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)#(nleft+1 if nleft > nright else nright +1)
牛客網 二叉樹
如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個...
牛客(39)平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。public boolean isbalanced solution treenode root 它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。if math.abs treedepth root...
重建二叉樹(牛客網)
從前序遍歷和中序遍歷重建乙個二叉樹。步驟如下 1 根據前序遍歷的第乙個元素建立根節點 2 在中序遍歷找到這個元素,左邊的元素都是根節點的左子樹的結點,右邊的元素都是右子樹的結點 3 在前序遍歷中找到屬於左右子樹的前序序列 4 左子樹重複123 5 右子樹重複123 6 返回根節點 例如前序遍歷序列和...