【问题标题】:How memory-efficient is Binary Tree implementation in Java?Java 中的二叉树实现的内存效率如何?
【发布时间】:2016-10-28 17:10:45
【问题描述】:

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

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

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

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;
}

【问题讨论】:

    标签: java memory binary-tree insertion


    【解决方案1】:

    add 内,您更改node 的唯一时间是该点的树是否为空,因此答案是否定的,除了第一次插入。

    但是,请注意,您仅在左侧向树添加了一个新级别(第一个 if 条件),因此您构建的“树”在左侧高度不平衡。这并不是真正的“树”,它更像是一个奇怪的链表。此外,由于您不维护任何特定的序列,因此它不会比简单的无序列表更好地进行搜索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 2012-01-09
      • 2011-02-05
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多