【问题标题】:Iterations to delete node and its children in a binary tree在二叉树中删除节点及其子节点的迭代
【发布时间】:2016-06-01 10:52:18
【问题描述】:

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:5 和 1 将被烧毁。

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

【问题讨论】:

  • @JimMischel,感谢您指出,我已编辑。

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


【解决方案1】:

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

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

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

  • 检查是否所有节点都被烧毁(为此您可以维护一个 Hash 访问更快)
  • 增加迭代次数(这将是您的结果)

【讨论】:

  • 我猜它会起作用,而不是维护哈希,我们可以使用一个标志(队列可以包含树节点和标志),它表示迭代结束。即,为相邻节点的最后一个入队相邻节点设置一个标志,当我们将该节点出列时,我们可以增加计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多