牛客網 平衡二叉樹 解題報告 python

2021-10-02 17:09:56 字數 1513 閱讀 3862

題目描述:

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

解題方案:

這裡我取了個巧,直接用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 返回根節點 例如前序遍歷序列和...