说明
二叉树的深度,就是二叉树的层数,在层序遍历中,总共有多少层,二叉树的深度就是多少
代码
# 计算二叉树的深度
def depth(node):
# 二叉树为空树,层数就是0
if node is None:
return 0
# 采用分而治之的思想来做,即把一棵树分成左右两边来分别计算其深度
# 左子树的深度
dl = depth(node.left)
# 右子树的深度
dr = depth(node.right)
# 返回左右子树层数大的再加1,因为加上根节点一层
return max(dl, dr) + 1
# 利用循环来解决,计算二叉树的深度
def depth2(node):
# 用一个双端队列来记录当前节点以及当前的深度
q = deque([(root, 1)])
while q:
node, d = q.popleft()
# 分别把存在左右子树的接节点加到队列里面
if node.left:
q.append((node.left, d + 1))
if node.right:
q.append((node.right, d + 1))
return d