题目
求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。(注:叶子节点是指没有子节点的节点。)
示例1
输入:{1,2}
返回值:2
示例2
输入:{1,2,3,4,#,#,5}
返回值:3
解题思路
在BM26—求二叉树的层序遍历的基础上,直接输出深度数量即可
题解
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型
#
import queue
class Solution:
def maxDepth(self , root: TreeNode) -> int:
q = queue.Queue()
level_num=1
count=0
next_num=0
# 1.先将根节点放入队列中
if root!= None:q.put(root)
# 2.遍历该节点是否有孩子节点,如果有将该节点出队,并将孩子节点放入队列中
while q.empty()== False:
new_root = q.get()
level_num-=1
# 如果该节点有左子树
if new_root.left!=None:
q.put(new_root.left)
next_num+=1
# 如果该节点有右子树
if new_root.right!=None:
q.put(new_root.right)
next_num+=1
# 当该层级遍历完成
if level_num==0:
#深度加一
count+=1
level_num = next_num
next_num = 0
return count