マイAVLツリーは整数avlTree[35][5]
の二次元アレイを使用して、Javaで実装されて動作していない - 列が表す:AVLツリーはインオーダートラバーサルが
- [0] - 左高
- [1 ] - 左の子
- [2] - データ
- [3] - 右の子
- [4] - 高右。
私はメインプログラムから次のメソッドを呼び出しています。その結果、3つのノードが得られます。一番左のノードに2回続けて親が続きます。
public void inorderTraversal(int root) {
if ((Main.avlTree[root][1] == 0) && (Main.avlTree[root][3] == 0)) {
System.out.println(Main.avlTree[root][2]);
} else {
if (Main.avlTree[root][1] != 0) {
root = Main.avlTree[root][1];
inorderTraversal(root);
}
System.out.println(Main.avlTree[root][2]);
if (Main.avlTree[root][3] != 0) {
root = Main.avlTree[root][3];
inorderTraversal(root);
}
}
}
これは宿題ですが、 'inorderTraversal(** final ** int root) 'のようなメソッドを宣言すると問題を解決するのに役立ちます。 StackOverflowErrorについては、おそらくツリー内にサイクルがあります。 – bestsss
最終的に宣言する必要はありません。タイプはintなので、 "実際の"値は変更されません。 – MasterCassim
@MasterCassim、rootはノードの現在のインデックスを表し、実際にはノードです。コード( 'root = ...')はそれを変更します。したがって、それはうんざりです。それは宿題なので、最後はヒントだった。 「実際の」値ではなく、効果的に変更されたノードへのインデックスです。 – bestsss