2011-11-14 11 views
0

左、右、および親のゲッターとセッターメソッドを作成するときに、単純なオブジェクトをとるバイナリ検索ツリーです。親ノードが設定されているときに何が起こっているかについて懸念があります。コード怒鳴る...BST内のメモリとポインタ

コード:コードを触発

public void setParent(Person parent) { 
    parent = new Person(parent.getName(), parent.getWeight()); 

コード例:あなたは、本質的に親オブジェクトのクローンであるものを作成している

public void setParent(Node parent) { 
    this.parent = parent; 
} 
+1

質問は多少不明です。どのプログラミング言語ですか?あなたは左/右/親ノードが要求されたときにnullを返すことが許されているかどうか尋ねていますか? – bobbymcr

+0

この宿題はありますか?なぜあなたのノードは彼らの両親が誰かを知る必要がありますか?それはちょうどそれを追跡するために混乱させる。 –

+0

親が誰なのかを追跡しないと、どうやってツリーを構築できますか? – Stainedart

答えて

2

。これは、ポインタを親オブジェクトに保存するだけとは異なります。

明らかに、親オブジェクトを複製することによって、より多くのメモリスペースが必要になります。さらに重要なことは、親の参照を複製していないことです。したがって、ツリーを横断しようとすると、ノードの親に行き、次に他の子を訪問しようとすると、ヌルポインタの束を描画します。

this.parentは、現在のオブジェクトのparentポインターへの参照です。

実際にはthisが親であることを意味するわけではありません。実際には、ローカルparentポインターを着信パラメーターparentから区別するためにthis.parentが使用されます。

class Person{ 
    Person parent; // <---- this is the "this.parent" attribute, and is initially undefined 
    public void setParent(Person parent){ // <---- the "Person parent" on this line is an incoming parameter 
     this.parent = parent; //<---- "this.parent" refers to the attribute, and "parent" refers to the parameter 
    } 
} 
関連する問題