树的前序遍历,中序遍历,后序遍历
(1)前序遍历:根+左子树的前序+右子树的前序
(2)中序遍历:左子树的中序+根+右子树的中序
(3)后序遍历:左子树的后序+右子树的后序+根
public class Trees {
private static Node1 createdRoots(){
Node1 A = new Node1('A');
Node1 B = new Node1('B');
Node1 C = new Node1('C');
Node1 D = new Node1('D');
Node1 E = new Node1('E');
Node1 F = new Node1('F');
Node1 G = new Node1('G');
Node1 H = new Node1('H');
A.left = B;B.left = D;D.left = null;D.right =null;B.right = E;
E.left = null;E.right = H;H.left = null;H.right = null;
A.right = C;C.left = F;F.left = null;F.right = null;C.right = G;
G.left = null;G.right = null;
return A;
}
public static void preOrderTraversal(Node1 root){ //根+左子树+右子树
if(root == null){
return;
}
System.out.println(root.value);
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
public static void inOrderTraversal(Node1 root){//左子树+根+ 右子树
if(root == null){
return;
}
inOrderTraversal(root.left);
System.out.println(root.value);
inOrderTraversal(root.right);
}
public static void postOrderTraversal(Node1 root){ //左子树+右子树+根
if(root == null){
return;
}
postOrderTraversal(root.left);
postOrderTraversal(root.right);
System.out.println(root.value);
}
public static void main(String[] args) {
Node1 root = createdRoots();
preOrderTraversal(root);
System.out.println("================================");
inOrderTraversal(root);
System.out.println("=================================");
postOrderTraversal(root);
}
}
编译结果:
A
B
D
E
H
C
F
G
================================
D
B
E
H
A
F
C
G
=================================
D
H
E
B
F
G
C
A