二进制搜索树将节点乘以-1

时间:2014-10-01 03:31:04

标签: algorithm data-structures binary-search-tree

如果您Binary Search Tree,我可以考虑multiply all nodes by -1那么,如果它还是Binary Search Tree,我们可以告诉我吗?

是否可以编写一个将其转换回Binary Search Tree的函数?

2 个答案:

答案 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) };