劍指offer 二叉樹的深度

2021-08-28 05:17:11 字數 847 閱讀 6026

class solution:

def treedepth(self, proot):

# write code here

if proot==none:

return 0

return max(1+self.treedepth(proot.left),1+self.treedepth(proot.right))

非常簡單,用遞迴做就可以了,如果遞迴到none就返回0,否則這層是1,1+遞迴到左右子樹後較大的那一邊。

再給出乙個非遞迴的寫法

class solution:

def treedepth(self, proot):

# write code here

'''if proot==none:

return 0

return 1+max(self.treedepth(proot.left),self.treedepth(proot.right))

'''if proot==none:

return 0

queue=[proot]

count=0

newcount=1

depth=0

while len(queue)!=0:

count+=1

root=queue.pop(0)

if root.left:

if root.right:

if count==newcount:

newcount=len(queue)

count=0

depth+=1

return depth

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。如果二叉樹只有根節點那麼深度就是1,如果只有左子樹,那麼就是左子樹的深度加1就是整棵二叉樹的深度 如果只有右子樹,那麼二叉樹的深度就是右子樹的深度加1 如果既有左子樹又有右子樹,那...

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。思路 面對樹形結構,我們常用的演算法就是遞迴,根樹的每一塊子樹都可以看成一棵小的完整的樹,這位我們解題提供了很好的思路。如果一開始傳入的就是空的那麼深度就是0,如果不是0,那麼這顆...

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。這道題蠻簡單的,求二叉樹的深度。可以是遞迴的方法,屬於dfs 深度優先搜尋 另一種方法是按照層次遍歷,屬於bfs 廣度優先搜尋 dfs struct treenode class ...