如何在不对其进行排序的情况下构建二叉树,I.E
如果我有输入5 4 9 8 1 2 7如何将其插入基于参考的二叉树中。 我知道这可以通过Array轻松实现,但它是否可以使用参考库?
答案 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
}
}