在二叉树中删除节点及其子节点的迭代

时间:2016-06-01 10:52:18

标签: data-structures binary-tree graph-algorithm

Example Tree image

给定一个二叉树和指向树中节点(存在)的指针,假设我们有父指针。我必须找到删除已删除节点的相邻节点和后续相邻节点的迭代次数。这里删除意味着设置一些标志,节点 - >烧伤。我不会删除该节点。 示例:

         1
       /   \
      2     3
     / \   / \
    4   5 6  7
   /   / 
  8   9
 /
10

并且树中的给定节点是4,

每次迭代中刻录的节点

在迭代1中:

  • 对于节点4:4,8,2(8是子节点,2是4的父节点,这些是4的相邻节点)。

在迭代2中:

  • 对于节点8:10将被刻录。 (4已被烧毁)
  • 对于节点2:将烧毁1和1。

这继续......,因此我必须找到刻录所有节点所需的迭代次数。

1 个答案:

答案 0 :(得分:0)

效率不高但我认为它会起作用:

维护一个队列,以便考虑删除下一个节点。在删除节点的相邻节点之前,请检查它们是否已设置burn标志。

此外,每次从队列中删除项目时:

  • 检查所有节点是否都已刻录(为此你可以维护一个节点 Hash以便更快地访问)
  • 递增迭代计数(这将是您的结果)