Java中二进制树实现的内存效率如何?

时间:2016-06-26 17:30:31

标签: java memory binary-tree insertion

所以我只是编写了在二叉树(NOT BST)中插入节点的代码。

我注意到每次递归插入返回'node'时,它都会被分配给初始节点。

这是否意味着,在每次插入完成时,此树的根的内存引用会发生变化?

public  void add(int data)
{
    root=add(root,data);
}

public static BinaryNode add(BinaryNode node, int data) {


    if(node==null)
    {
        node=new BinaryNode(data);

    }
    else {
        ///IF not 1st element, flow enters this part
        if(node.left==null && node.right==null)
        {
            node.left=add(node.right,data);
        }
        else if (node.right == null) {
            node.right=add(node.right, data);

        } else {
            node.left=add(node.left, data);

        } 
    }
    return node;
}

1 个答案:

答案 0 :(得分:0)

add范围内,您更改node的唯一时间是,如果该点的树为空,那么除了第一个插入外,答案为否。

但是,请注意,您只在左侧(第一个if条件)向树添加一个新级别,因此"树"你建立的左边高度不平衡。这不是一个真正的树#34,它更像是一个奇怪的链表。此外,由于您没有维护任何特定的序列,因此它不会比简单的无序搜索列表更好。