2016-06-26 5 views
0

私はバイナリツリー(NOT BST)にノードを挿入するコードを書きました。Javaでのバイナリツリーの実装はどれだけメモリ効率が良いですか?

私は、再帰挿入が「ノード」を返すたびに、それが初期ノードに割り当てられることに気付きました。

これは、このツリーのルートのメモリ参照が各挿入の完了時に変更されることを意味しますか? add

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

答えて

0

その時点で木が空の場合はnodeを変更するだけの時間がないので、答えは最初のインサートを除き、noです。

ただし、新しいレベルをツリーの左側(最初はif)に追加すると、作成するツリーは左に大きく偏っていることに注意してください。これは実際には "ツリー"ではなく、奇妙なリンクリストのようなものです。また、特定のシーケンスを維持しないので、単純な順序付けされていない検索のリストよりも優れていることはありません。

関連する問題