📜  门| GATE CS 2019 |问题 8(1)

📅  最后修改于: 2023-12-03 15:28:38.461000             🧑  作者: Mango

GATE CS 2019 | 问题 8

这是一道与树有关的问题,需要程序员具备一定的数据结构和算法知识。题目要求我们实现一个函数 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。