📜  打印距离给定节点 K 处的所有节点:迭代方法(1)

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

打印距离给定节点 K 处的所有节点:迭代方法

在二叉树中,给定一个节点K,要求打印距离K“d”距离的所有节点,其中d为正整数。本文将介绍如何使用迭代方法来实现这一功能。

迭代方法实现

使用迭代方法实现该功能,需要借助队列数据结构和层次遍历的思想。

具体实现步骤如下:

  1. 建立一个队列,将给定节点K入队。

  2. 初始化变量distance为0,表示当前遍历到的节点距离给定节点的距离。

  3. 循环遍历队列中的节点,每次从队列中取出一个节点,如果该节点距离给定节点的距离等于目标距离,则将该节点打印输出。

  4. 如果该节点距离给定节点的距离小于目标距离,则将该节点的左右子节点入队,并将该节点距离给定节点的距离加1。

  5. 重复步骤3和4,直到队列为空。

以下为Python代码实现:

def print_nodes_at_distance_k(root, k):
    if not root:
        return
    queue = [(root, 0)]
    while queue:
        node, distance = queue.pop(0)
        if distance == k:
            print(node.val)
        elif distance < k:
            if node.left:
                queue.append((node.left, distance+1))
            if node.right:
                queue.append((node.right, distance+1))
实现效果

如图所示,二叉树中,给定节点K为2,目标距离为2,打印出距离K为2的所有节点。

        1
       / \
      2   3
     / \   \
    4   5   6
         \
          7

运行上述Python代码,输出结果为:

>>> print_nodes_at_distance_k(root, 2)
5
6

表示距离节点2的距离为2的节点为5和6。

总结

通过以上实现,我们可以打印出二叉树中距离给定节点K指定距离的所有节点。由于我们使用了迭代方法,空间复杂度比递归方法要低得多。同时,也通过了本例的实现,学习了如何使用队列和层次遍历的思想实现二叉树遍历。