📅  最后修改于: 2023-12-03 15:39:42.229000             🧑  作者: Mango
在二叉树中,给定一个节点K,要求打印距离K“d”距离的所有节点,其中d为正整数。本文将介绍如何使用迭代方法来实现这一功能。
使用迭代方法实现该功能,需要借助队列数据结构和层次遍历的思想。
具体实现步骤如下:
建立一个队列,将给定节点K入队。
初始化变量distance为0,表示当前遍历到的节点距离给定节点的距离。
循环遍历队列中的节点,每次从队列中取出一个节点,如果该节点距离给定节点的距离等于目标距离,则将该节点打印输出。
如果该节点距离给定节点的距离小于目标距离,则将该节点的左右子节点入队,并将该节点距离给定节点的距离加1。
重复步骤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指定距离的所有节点。由于我们使用了迭代方法,空间复杂度比递归方法要低得多。同时,也通过了本例的实现,学习了如何使用队列和层次遍历的思想实现二叉树遍历。