【问题标题】:Find nodes at the edge of a BST查找 BST 边缘的节点
【发布时间】:2015-11-20 20:44:05
【问题描述】:

BST边缘的节点是节点:同级节点中具有最大/最小键的节点。 (不包括根节点和叶节点)

> Suppose we already have a BST like this:

                  --------5--------
                     -4--     -8---
                  -1-  -3-   -N-10-
                      -2-N-   -9--N-

So the nodes we need to find: 4,8,10 (don't use array/string)

我正在考虑使用堆栈来存储节点的键。但似乎我在弹出和比较以找到最大/最小时遇到了麻烦。那么你能帮我想出更好的解决方案吗?

【问题讨论】:

  • 我相信它们在图形边缘。
  • @Aszune'sHeart 是的,它们是图形化的
  • 除非我不明白这个问题,否则这是直截了当的。因此,这将取决于您在提取节点后要对它们做什么。
  • @AnonMail 哦,他们会按照key的升序一个一个被删除。
  • 如果您想节省空间,请考虑使用没有链接字段的叶节点类。

标签: c++ binary-search-tree


【解决方案1】:

执行级别顺序遍历(使用队列)。

每次出列时,对于您所处的级别,检查它是迄今为止记录的最小值还是最大值。

在检查最小值和最大值时,确保 root 没有将 root.left 和 root.right 都设为 NULL

【讨论】:

  • 我使用与您相同的解决方案使用我的堆栈解决了这个问题。顺便谢谢你。
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多