2017-05-04 8 views
0

このコードでParentをバイナリツリーで取得するにはどうすればよいですか?いくつかのデータのツリーに対してバイナリツリーでParentを取得する方法

public class Node 
{ 
    public string state; 
    public Node Left; 
    public Node Right; 




    public Node (string s , Node L , Node R) 
    { 
     this.state = s; 
     this.Right = R; 
     this.Left = L; 
    } 

    public Node (string s) 
    { 
     this.state = s; 
     this.Right = null; 
     this.Left = null; 
    } 


} 

とコードこの:私はこれを書いた

1

2

を、どのように私は(のようなノードの親を取得することができます新しいノード( "22lltrk"、null、null)) 私は自分のコードにどこに追加する必要がありますか?

ありがとうございました。

+0

あなたはあなたの問題を解決するために試したどのようなコードを示してください。ツリーの初期化データだけを表示することは関連コードではありません –

+0

最初の検索でこれが見つかりましたhttp://stackoverflow.com/questions/30736577/find-the-parent-node-of-a-node-in-binary-search-木 –

答えて

1

オプト1:オプト2クラスに

public class Node 
{ 
    public string state; 
    public Node Left; 
    public Node Right; 
    public Node Parent; // new 

    public Node (string s , Node L , Node R) 
    { 
     this.state = s; 
     this.Right = R; 
     this.Right.Parent = this; // new 
     this.Left = L; 
     this.Left.Parent = this; // new 
    } 

    public Node (string s) 
    { 
     this.state = s; 
     this.Right = null; 
     this.Left = null; 
     this.Parent = null; // new 
    } 
} 

を親リンクを追加:ツリートラバーサル

Node FindParent(Node root, Node child) 
{ 
    // Base Cases 
    if(root.Left == null && root.Right == null) 
    return null; 

    if(root.Left == child || root.Right == child) 
    return root; 

    // Recursion 
    var leftSearch = FindParent(root.Left, child); 
    if (leftSearch != null) 
     return leftSearch; 

    return FindParent(root.Right, child); 
} 
+1

説明ありがとう – amr2312345

関連する問題