當前位置:
首頁 >
二叉树的深度_[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] 二叉树的深度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 代理ip验证_Python
- 下一篇: ssm插入数据时候栈溢出_程序员算法与数