Java - 二叉树递归插入

时间:2017-05-10 13:17:22

标签: java recursion binary-tree

编辑:我这里没有使用任何密钥,因为它们无法使用我的代码 - 因此我的代码与建议的代码不同。

我上周在大学开始使用二叉树,当我们在树中插入任何东西时,我们主要使用队列作为帮助。但我想知道如果没有队列的帮助就可以做到这一点。到目前为止我制作了这段代码:

public void withoutQueue(Node newNode) {

    if (root == null) {
        root = newNode;
        current = root;

    } else if (root != null) {

        if (current.left == null) {
            current.left = newNode;
            newNode.parent = current;
            counterleft++;

        } else if (current.left != null && current.right == null) {
            current.right = newNode;
            newNode.parent = current;
            counterright++;

        } else if (current.left != null && current.right != null && current.left.left == null && counterleft <= counterright) {
            Node helper = current;
            current = current.left;
            current.parent = helper;
            counterleft++;
            breadthFirstAppend(newNode);

        } else if (current.left != null && current.right != null && counterright <= counterleft) {
            Node helper = current;
            current = current.parent.right;
            current.parent = helper;
            counterright++;
            breadthFirstAppend(newNode);

        }

    }
}

但是到目前为止它并没有那么好用。它正确插入前三个(root,root.left,root.right) - 然后跳转到第6个插入的节点...我根本不知道该做什么。我添加了反左/右整数,以便我可以通过它控制它,但它没有太大帮助。

我的核心问题是它要么只向左跳(1,2,4,...),要么只跳到右边(1,3,5,...) - 但它应该跳(1, 2,3,4,5,...)。

有关如何改进此代码的任何提示?当我发现自己的东西时,我会更新它。

0 个答案:

没有答案