📅  最后修改于: 2023-12-03 15:28:38.461000             🧑  作者: Mango
这是一道与树有关的问题,需要程序员具备一定的数据结构和算法知识。题目要求我们实现一个函数 maxNodeDepth
,该函数的输入为一棵二叉树,输出二叉树中最深节点的深度。
给定一棵二叉树,求二叉树中最深节点的深度。
4
/ \
2 7
/ \ / \
1 3 6 9
/
8
在上述二叉树中,最深节点是包含值 8 的节点,深度为 4。
对于一棵二叉树,我们可以通过树的遍历来得到该树的深度。具体来说,我们可以借助递归的方式求出左右子树的深度,然后计算出该节点的深度。最后比较左右子树的深度,返回其中的最大值。
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def maxNodeDepth(root):
if root is None:
return 0
left_depth = maxNodeDepth(root.left)
right_depth = maxNodeDepth(root.right)
return max(left_depth, right_depth) + 1
# 创建如上面的二叉树
root = Node(4)
root.left = Node(2)
root.right = Node(7)
root.left.left = Node(1)
root.left.right = Node(3)
root.right.left = Node(6)
root.right.right = Node(9)
root.right.right.left = Node(8)
print("该二叉树的最深节点深度为:", maxNodeDepth(root)) # 输出:该二叉树的最深节点深度为: 4
上面是一个简单的 Python 实现,其中我们创建了一个 Node 类来表示二叉树的节点。在 maxNodeDepth
函数中,我们假设输入的根节点非空,计算出左右子树的深度,并返回其中的最大值加一,即为该节点的深度。最后我们按照上述例子,创建了一棵二叉树,调用 maxNodeDepth 函数得出最深节点的深度为 4。