插入二叉树而不排序输入

时间:2012-02-07 02:50:14

标签: java tree binary-tree

如何在不对其进行排序的情况下构建二叉树,I.E

如果我有输入5 4 9 8 1 2 7如何将其插入基于参考的二叉树中。 我知道这可以通过Array轻松实现,但它是否可以使用参考库?

2 个答案:

答案 0 :(得分:3)

Tree buildTree(int[] array, int index) {
   if(index > array.length) { return null; }
   return new Tree(
     array[index],
     buildTree(array, 2 * index + 1),
     buildTree(array, 2 * index + 2));
}

大部分工作都在递归和索引中,但它并没有太糟糕。

答案 1 :(得分:2)

一个简单的规则是始终插入左子树然后切换子树。右子树总是比左子树大0-1元素,因此您可以随时插入左子树。现在,左子树比右子树大0-1元素,因此您希望切换子树以保留不变量。在伪代码中:

insert(t,v) {
    if (t == null) {
        return new TreeNode(v,null,null)
    } else {
        left = insert(t.left,v)
        right = t.right
        t.left = right
        t.right = left
        return t
    }
}