java - 二叉搜索树 - 删除所有大于特定值的整数

标签 java data-structures binary-search-tree

我试图找出如何删除所有整数 a,使得 a > b 其中 a 是二叉搜索树中的任何元素,b 是阈值数BST 中的所有元素都会进行比较。到目前为止我已经:

public treeRemoveGreater(int x, BinaryNode node) {
       if (node.element > x) {
          //node.element accesses element of given node i.e. integer value
          remove(node.element);
       }
       else {
          //Traverse tree 
       }

我的问题是弄清楚如何相应地遍历树。我知道有一种有效的方法可以解决这个问题,因为不一定需要完全遍历树,我只是不确定如何继续。

最佳答案

考虑一下 BST 的属性。父节点等于或大于左侧的子节点,并且等于或小于右侧的子节点。因此,您需要找到 B 并删除其右侧的所有节点(只要确保右侧没有节点等于 B,因为您的条件都是 a > b)。就像 Makoto 所说的删除整个子树。

关于java - 二叉搜索树 - 删除所有大于特定值的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484566/

相关文章:

c# - 子集索引搜索的数据结构

c# - 类似于字典的数据结构,但有范围?

haskell - 有限双射的高效函数数据结构

java - 在二叉树上递归搜索

java - boolean 递归的替代方法

java - setter 和 getter 是 java 中的编码标准还是我们可以写下我们的愿望?

java - 具有相同端口和地址的套接字的两个实例

java - e^x = 1 + x + x2/2! + x3/3! + x4/4! << 使用java方法对e求x次方

java - 在 org.apache.velocity.runtime.RuntimeInstance.parse 处获取 NullPointerException(RuntimeInstance.java :1198)

algorithm - 查找给定的总和是否存在于 BST 中的一条路径上