日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

二叉树的深度_[LeetCode 104] 二叉树的深度

發(fā)布時間:2025/3/19 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的深度_[LeetCode 104] 二叉树的深度 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

給定一個二叉樹,找出其最大深度。

二叉樹的深度為根節(jié)點到最遠葉子節(jié)點的最長路徑上的節(jié)點數(shù)。

說明: 葉子節(jié)點是指沒有子節(jié)點的節(jié)點。

** 示例:** 給定二叉樹 [3,9,20,null,null,15,7],

3/ 9 20/ 15 7

返回它的最大深度 3 。

解決思路

采用廣度優(yōu)先搜索(BFS)從根節(jié)點開始,逐層遍歷,每遍歷完一層深度加1。

代碼

class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Solution(object):def maxDepth(self, root):if not root:return 0nodes = [root]s = 0while len(nodes)>0:s += 1tmp = []for node in nodes:if hasattr(node, "left") and node.left is not None:tmp.append(node.left)if hasattr(node, "right") and node.right is not None:tmp.append(node.right)nodes = tmpprint(len(nodes))return s

首先,創(chuàng)建nodes變量存放每一層的node,預先將root節(jié)點放入,只要nodes不為空就代表還有節(jié)點沒有被遍歷到,s代表樹的深度,tmp是一個臨時列表。因為nodes存放每一層的所有節(jié)點,因此可以通過循環(huán)將每一個節(jié)點的子節(jié)點依次放入一個tmp列表中,待nodes循環(huán)結束,將tmp賦值給nodes變量,進行下一輪的判斷,當nodes為空時程序退出,返回s。

測試

首先生成一顆樹。

p = TreeNode(1) p.left = TreeNode(2) p.right = TreeNode(3) p.left.left = TreeNode(4) p.right.left = TreeNode(5) p.right.right = TreeNode(6) p.left.left.left = TreeNode(7) p.right.right.left = TreeNode(8) p.right.right.left.right = TreeNode(9)

樹的結構如下,共有5層,共計9個節(jié)點。

solution = Solution() depth = solution.maxDepth(p) print(depth)

最終的結果為5,與預期一致。代碼提交運行結果如下,還有很大的提升空間!

總結

以上是生活随笔為你收集整理的二叉树的深度_[LeetCode 104] 二叉树的深度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。