質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1470閲覧

二分木探索のsearchの中身

nabe_u

総合スコア19

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/11/24 02:40

編集2017/11/24 02:41

###目的
二分木探索の実装

###問題点
下記コードの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に書いてある通りです。
実行例は以下の通りです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず、アルゴリズム以前の問題で、Javaでは文字列の比較に「==」演算子を使用してはいけません。
アルゴリズムに関しては、「そのノードがなければ子のレベルを親にして」の部分がコードとして実装できていませんよね?
ついでに言えば、処理内容が異なるのに全く同じ条件式を持つ「else-if」文が複数存在することは、どのようなアルゴリズムであってもおかしいですよね?
まずはこの辺りの修正からやってみましょう。

投稿2017/11/26 02:41

amadablam

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問