📌  相关文章
📜  打印距根 k 距离的节点(1)

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

打印距根 k 距离的节点

在二叉树中,我们可以通过深度优先搜索或广度优先搜索的算法来找到与根节点的距离为 k 的所有节点。这些节点可以以任意顺序打印出来或存入列表中。

下面是一个打印距离根节点 k 的节点的示例代码,假设 Node 类表示二叉树的节点:

class Node:
    def __init__(self, val=None, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
    def print_nodes_at_distance_k(root, k):
        if not root:
            return None
        if k == 0:
            print(root.val)
        else:
            Node.print_nodes_at_distance_k(root.left, k-1)
            Node.print_nodes_at_distance_k(root.right, k-1)

上面的代码中,我们采用了递归的方式来实现打印距离根节点 k 的节点。首先判断根节点是否为空,如果为空则直接返回。接下来判断距离根节点的距离 k 是否为 0,如果为 0 则打印当前节点的值。如果距离根节点的距离 k 不为 0,则递归调用函数,分别对当前节点的左右子树执行打印操作,距离值 k 逐步减 1。

下面是一个简单的测试用例来说明如何使用上面的函数:

# 构建二叉树
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)

# 打印距离根节点为 2 的节点
Node.print_nodes_at_distance_k(root, 2)

输出结果:

4
5
6
7

总的来说,打印距离根节点 k 的节点是一个基础的二叉树算法问题,递归的方式是最常用的实现方法之一。掌握此问题可以帮助程序员更好地理解树的性质,也能够帮助进行更高效的二叉树操作。