在bst的常规递归代码中,树的左右元素在每次递归调用中都设置(在t.left =和t.right =中)。 这不是再构建树吗?在递归插入过程中重构二叉搜索树吗?
将存储对前一个节点的引用,然后将新节点添加到左侧还是右侧(取决于值)还是我在此处丢失了某些东西?谢谢!
public Elem insert (Elem t, int toInsert)
{
if (t == null)
return new Elem(toInsert,null,null);
else {
if (toInsert < t.value)
t.left = insert(t.left, toInsert);
else
t.right = insert(t.right,toInsert);
return t;
}
}
要插入一个新元素,代码将每个元素或子树分配为左侧和右侧。我的问题是,这不是一个开销?要插入链表,我们只需导航到最后一个节点并在那里执行链接。在这里,我们对每个插入的树进行链接。有没有其他方法可以避免这种情况?
但是,是不是它分配左和右引用从根开始到最后再次只是一个插入? – Stacky
它遍历树而不是重构 – ravthiru
你能解释一下“空调”是什么?还有一些关于t.left =和t.right = – Stacky