数据结构中二叉树的三种遍历方式(采用递归)
(1)前序遍历
public void preOrderTraverse() {
// if (root != null) {
// //前序遍历 先输出根节点的值
// System.out.print(root.getData()+" ");
// //对左子树进行先序遍历
// BinaryTree leftTree = new MyBinaryTree(root.getLeftChild());
// leftTree.preOrderTraverse();
// //对右子树进行先序遍历
// BinaryTree rightTree = new MyBinaryTree(root.getRightChild());
// rightTree.preOrderTraverse();
// }
System.out.println("前序遍历;");
this.preOrderTraverse(root);
System.out.println();
}
private void preOrderTraverse(Node root) {
if (root != null) {
//前序遍历
System.out.print(root.getData()+" ");
this.preOrderTraverse(root.getLeftChild());
this.preOrderTraverse(root.getRightChild());
}
}
(2)中序遍历
public void inOrderTraverse() {
System.out.println("中序遍历:");
this.inOrderTraverse(root);
System.out.println();
}
private void inOrderTraverse(Node root) {
if (root != null) {
//中序遍历
this.inOrderTraverse(root.getLeftChild());
System.out.print(root.getData()+" ");
this.inOrderTraverse(root.getRightChild());
}
}
(3)后序遍历
public void postOredrTraverse() {
System.out.println("后序遍历:");
this.postOrderTraverse(root);
System.out.println();
}
private void postOrderTraverse(Node root) {
if (root != null) {
//后序遍历
this.postOrderTraverse(root.getLeftChild());
this.postOrderTraverse(root.getRightChild());
System.out.print(root.getData()+" ");
}
}