1、定义节点
/**
* @author Administrator 树的节点
*/
public class TreeNode {
public char value;
public TreeNode left;
public TreeNode right;
TreeNode(char value) {
this.value = value;
}
TreeNode(char value, TreeNode left, TreeNode right) {
this.value = value;
this.left = left;
this.right = right;
}
}
2、建立二叉树结构
H
/ \
D G
/ \ \
B C F
\ /
A E
3、递归遍历
public class Order {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeNode root = init();
System.out.println("先序");
ProOrder(root);
System.out.println("中序");
InOrder(root);
System.out.println("后序");
PostOrder(root);
}
/** 构造树 */
public static TreeNode init() {
TreeNode a = new TreeNode('A');
TreeNode b = new TreeNode('B', null, a);
TreeNode c = new TreeNode('C');
TreeNode d = new TreeNode('D', b, c);
TreeNode e = new TreeNode('E');
TreeNode f = new TreeNode('F', e, null);
TreeNode g = new TreeNode('G', null, f);
TreeNode h = new TreeNode('H', d, g);
return h;// root
}
/**
* 递归前序遍历
*
* @param tree
*/
public static void ProOrder(TreeNode tree) {
System.out.println(tree.value);
if (tree.left != null) {
ProOrder(tree.left);
}
if (tree.right != null) {
ProOrder(tree.right);
}
}
/**
* 递归中序遍历
*
* @param tree
*/
public static void InOrder(TreeNode tree) {
if (tree.left != null) {
InOrder(tree.left);
}
System.out.println(tree.value);
if (tree.right != null) {
InOrder(tree.right);
}
}
/**
* 递归后顺遍历
*
* @param tree
*/
public static void PostOrder(TreeNode tree) {
if (tree.left != null) {
PostOrder(tree.left);
}
if (tree.right != null) {
PostOrder(tree.right);
}
System.out.println(tree.value);
}
}