###目的
二分木探索の実装
###問題点
下記コードのBTNode searchの部分がどう書けばいいのか分かりません。
調べてみましたが、明確な解決策が見つかりませんでした。
###ソースコード
public
1 private String label; 2 private BTNode left; 3 private BTNode right; 4 public BTNode(String label, BTNode left, BTNode right) { 5 this.label = label; 6 this.right = right; 7 this.left = left; 8 } 9 public BTNode search(String name) { 10 11 //この部分 12 while (name != null) { 13 if (name == label) { 14 return this; 15 } else if (label == null){ 16 BTNode nextNode = this.left; 17 return nextNode; 18 } else if (label == null) { 19 BTNode nextRight = this.right; 20 return nextRight; 21 } 22 } 23 return this; 24 } 25 26 public String toString() { 27 return "[" + label + "]"; 28 } 29 30 public static void main(String[] args) { 31 BTNode tree = 32 new BTNode("A", 33 new BTNode("B", 34 new BTNode("C", null, null), 35 new BTNode("E", null, null)), 36 new BTNode("D", 37 new BTNode("F", null, null), 38 new BTNode("G", null, null))); 39 40 System.out.println("Aを探す"); 41 System.out.println("あった? " + tree.search("A")); 42 System.out.println("Bを探す"); 43 System.out.println("あった? " + tree.search("B")); 44 System.out.println("Cを探す"); 45 System.out.println("あった? " + tree.search("C")); 46 System.out.println("Dを探す"); 47 System.out.println("あった? " + tree.search("D")); 48 System.out.println("Eを探す"); 49 System.out.println("あった? " + tree.search("E")); 50 System.out.println("Fを探す"); 51 System.out.println("あった? " + tree.search("F")); 52 System.out.println("Gを探す"); 53 System.out.println("あった? " + tree.search("G")); 54 System.out.println("Zを探す"); 55 System.out.println("あった? " + tree.search("Z")); 56 }
###補足
色々なサイトで調べてみると、「根から順に調べて、そのノードがなければ子のレベルを親にして下のレベルを調べる」といった旨のことが書いてありました。
自分なりにやってみましたが、どうもうまくいきません。
また、木構造はmainに書いてある通りです。
実行例は以下の通りです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。