📅  最后修改于: 2023-12-03 15:07:34.946000             🧑  作者: Mango
给定一棵二叉树,找到其深度并返回。
输入的每一行表示二叉树的一个节点,节点编号按照二叉树的层序遍历顺序给出,若节点为空则用-1表示。对于所有的节点,其编号均为非负整数或-1,且编号0表示根节点。
输出一个整数表示二叉树的深度。
1
2 3
4 -1 5 6
-1 7 -1 -1 -1 -1
-1 -1
4
0
1 2
-1 -1 3 4
-1 -1 5 6
7 8 -1 -1
-1 9 -1 -1 -1
4
本题需要求树的深度,按照二叉树的遍历方式,可以从上往下逐层遍历,遍历到最后一层时,则可以得到树的深度。
可以使用深度优先搜索(DFS)或广度优先搜索(BFS)求解,其中DFS的时间复杂度为$O(N),N$为节点数量;BFS的时间复杂度同样为$O(N)$。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
queue = deque()
queue.append(root)
max_depth = 0
while queue:
max_depth += 1
for i in range(len(queue)):
node = queue.popleft()
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return max_depth
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
left_depth = self.maxDepth(root.left)
right_depth = self.maxDepth(root.right)
return max(left_depth, right_depth) + 1
注意:主题要求返回markdown格式,因此代码片段中要按markdown格式标明。