劍指Offer 三十八 九)二叉樹深度 平衡二叉樹

2021-09-28 12:59:44 字數 1608 閱讀 5618

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

解題思路:

①如果一棵樹只有乙個節點,它的深度為1

②如果根節點只有左子樹而沒有右子樹,那麼樹的深度是左子樹的深度加1

同樣,如果根節點只有右子樹而沒有左子樹,那麼樹的深度是右子樹的深度加1

既有右子樹又有左子樹時,數的深度是左子樹和右子樹深度較大者加1

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

treedepth

(self, proot)

:if proot ==

none

:return

0 left = self.treedepth(proot.left)

right = self.treedepth(proot.right)

return

max(left,right)

+1

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

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

treedepth

(self, proot)

:if proot ==

none

:return

0 left = self.treedepth(proot.left)

right = self.treedepth(proot.right)

return

max(left,right)+1

defisbalanced_solution

(self, proot)

:if proot ==

none

:return

true

left = self.treedepth(proot.left)

right = self.treedepth(proot.right)

diff = right - left

if diff <-1

or diff >1:

retrun false

return self.isbalanced_solution(proot.left)

and self.isbalanced_solution(proot.right)

二叉樹的深度及廣度優先遍歷

劍指Offer 十八 二叉樹的映象

操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 二叉樹的映象定義 源二叉樹8 6 10 5 7 9 11 映象二叉樹8 10 6 11 9 7 5 coding utf 8 class treenode def init self,x self.val x self.left none sel...

劍指Offer(五十八) 對稱的二叉樹

劍指offer 五十八 對稱的二叉樹 題目 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。實現 definition for a binary tree node.struct treenode class solution retur...

劍指offer 樹 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 不含重複數字。前序遍歷序列第乙個值是根節點,找到其在中序遍歷中的位置,那此位置前面的是左子樹節點,右邊的是右子樹節點...