私は過去2日間、バイナリツリーで作業していました。私が問題があると思われる作業の1つは、BinaryTreeクラスのpreOrderTraversalメソッドとpostOrderTraversalメソッドを表示することです。現時点では、displayInOrderメソッドのみを表示できます。このミスを修正するために私は何ができますか?Java:先行予約と後続予約のトラバースを表示
public class BinaryTree {
BinaryTreeNode root = null;
public void insertInTree (int newData) {
if (root == null)
root = new BinaryTreeNode(newData);
else root.insert(newData);
}
public void displayInOrder() {
displayInOrder (root);
}
public void preOrderTraversal() {
preOrderTraversal (root);
}
public void postOrderTraversal() {
postOrderTraversal (root);
}
public void preOrderTraversal (BinaryTreeNode subRoot) {
if (subRoot == null) return;
preOrderTraversal(subRoot.getLeft());
System.out.println(" " + subRoot.getData() + " ");
preOrderTraversal(subRoot.getRight());
}
public void postOrderTraversal (BinaryTreeNode subRoot) {
if (subRoot == null) return;
postOrderTraversal(subRoot.getLeft());
System.out.println(" " + subRoot.getData() + " ");
postOrderTraversal(subRoot.getRight());
}
public void displayInOrder (BinaryTreeNode subRoot){
if (subRoot == null) return;
displayInOrder (subRoot.getLeft());
System.out.print(" " + subRoot.getData() + " ");
displayInOrder (subRoot.getRight());
}
}
public class BinaryTreeNode {
private int data;
private BinaryTreeNode left;
private BinaryTreeNode right;
public BinaryTreeNode() {
left = null; right = null; data = 0;
}
public BinaryTreeNode(int data) {
left = null; right = null; this.data = data;
}
public int getData() {
return data;
}
public BinaryTreeNode getLeft() {
return left;
}
public BinaryTreeNode getRight() {
return right;
}
public void insert (int newData) {
if (newData < data) {
if (left == null)
left = new BinaryTreeNode(newData);
else left.insert(newData);
} else if (newData > data) {
if (right == null)
right = new BinaryTreeNode(newData);
else right.insert(newData);
} else
System.out.println("Duplicate – not adding……" + newData);
}
}
public class BinaryTreeExample {
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.insertInTree(6);
tree.insertInTree(3);
tree.insertInTree(9);
tree.insertInTree(1);
tree.insertInTree(15);
tree.insertInTree(7);
tree.displayInOrder();
}
}
;'他の機能を逃したが、私はその問題を解決し、私のコードを変更することができた –
を呼び出す:あなたのラッパー・メソッドの最後の改行を印刷する必要があります。ツリーを表示することはできますが、表示されているpreOrderおよびpostOrderトラバーサルメソッドはまだ間違っています。これらは表示されますが、displayInOrderメソッドと同じ順序です。 – xy1990
それは本当に難しいことではありません、単に私はあなたのロジックに取り組んで、あなたのコードで何が起こっているかを見るためにデバッグを使うことを提案します。 –