輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
解題思路:
①如果一棵樹只有乙個節點,它的深度為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 樹 重建二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 不含重複數字。前序遍歷序列第乙個值是根節點,找到其在中序遍歷中的位置,那此位置前面的是左子樹節點,右邊的是右子樹節點...