如果您Binary Search Tree
,我可以考虑multiply all nodes by -1
那么,如果它还是Binary Search Tree
,我们可以告诉我吗?
是否可以编写一个将其转换回Binary Search Tree
的函数?
答案 0 :(得分:1)
在二叉搜索树中,节点左子树的所有元素必须小于(或等于,在某些树中)节点,并且节点的右子树的所有元素必须更大比(或等于,在某些树中)节点。如果将所有节点乘以-1,则最终会翻转此节点,以便每个节点的左子树存储较大的值,右子树存储较小的值。要将此转换回BST,您必须"翻转"通过镜像它的BST。我将把如何做的细节留作练习;它是一个典型的CS问题,具有漂亮的递归解决方案。
希望这有帮助!
答案 1 :(得分:1)
有趣的问题。
在Binary Search Tree
中,对象图的结构表示排序顺序。
通过将所有对象乘以-1,它现在反向排序。
EG:
3 4 8 9 12
变为
-3 -4 -8 -9 -12
那么,你如何使它仍然保持二进制搜索树属性?
二叉树由两部分组成:对象节点图,以及如何比较对象的知识。比较函数看起来像这样:
Compare(left, right) {
return (left < right);
}
如果对二叉树内的值执行转换,则可以更改其比较函数,然后它将继续按原样运行。
myBinaryTree.comparisonFunction = function(left, right) { return (right < left) };