在过去的一段时间里,我一直在处理Binary Trees。我似乎遇到麻烦的一项任务是显示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();
}
}
因为你只调用这个'tree.displayInOrder();'错过了其他的功能调用 –
我能解决这个问题,并修改我的代码。我可以显示树,但是显示的preOrder和postOrder遍历方法仍然是错误的。它们显示,但它与displayInOrder方法的顺序相同。 – xy1990
这不是很难,简单地说我建议你的逻辑工作,并使用调试,看看代码中究竟发生了什么 –