Algorithm 给定一个平衡的BST.a最小值、最大值和值,如何在最小值和最大值中找到最大的Xor?

Algorithm 给定一个平衡的BST.a最小值、最大值和值,如何在最小值和最大值中找到最大的Xor?,algorithm,binary-search-tree,avl-tree,Algorithm,Binary Search Tree,Avl Tree,基本上,你有一个充满值的BST。例1-16 一个最小值、最大值和值(10,15,3),您需要找到BST中的值和树的最小值和最大值范围内的给定值之间的最大异或值 我想知道是否有一种方法可以在不遍历整个树的情况下做到这一点。 如果min和max不存在,我的方法就是 int xor (Node curent,min,max,value,highestXor){ 1. if node == null return highestXor 2. check node.value ^ value, if

基本上,你有一个充满值的BST。例1-16 一个最小值、最大值和值(10,15,3),您需要找到BST中的值和树的最小值和最大值范围内的给定值之间的最大异或值

我想知道是否有一种方法可以在不遍历整个树的情况下做到这一点。 如果min和max不存在,我的方法就是

int xor (Node curent,min,max,value,highestXor){
 1. if node == null return highestXor
 2. check node.value ^ value, if > highestXor replace.
 3. check node.left ^ value and node.right ^ value, nextNode= highest between them 
 4. xor(nextNode,min,max,value,newHighest)
}
基本上保持跟踪产生更高xor值的节点


对于min和max,我遇到的问题是,当我检查node>=min&&node时,我的建议是对另一个问题采用类似于此答案的方法:

不过,这样做的一个问题是,您没有使用所有元素都已插入到树中的事实

或者,您可以构造一棵树来代替二叉树,该树对递归树进行建模,然后使用上面的解决方案?就我的2美分:)

      9 
    /   \
  /       \
5           13
           /   \
         11     15
         /\     /\
       10  12 14  16