Algorithm 给定一个平衡的BST.a最小值、最大值和值,如何在最小值和最大值中找到最大的Xor?
基本上,你有一个充满值的BST。例1-16 一个最小值、最大值和值(10,15,3),您需要找到BST中的值和树的最小值和最大值范围内的给定值之间的最大异或值 我想知道是否有一种方法可以在不遍历整个树的情况下做到这一点。 如果min和max不存在,我的方法就是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
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