花了10分钟写了下简单二叉树的三种遍历方法
package com.test;
import java.util.Random;
public class BinTreeTest {
Node root;
class Node {
Node left;
Node right;
int data;
public Node(int data) {
this.data = data;
}
}
public void createTree(Node node, int data) {
if (node == null) {
root = new Node(data);
} else if (data > node.data) {
if (node.left == null) {
node.left = new Node(data);
} else {
createTree(node.left, data);
}
} else {
if (node.right == null) {
node.right = new Node(data);
} else {
createTree(node.right, data);
}
}
}
/**
* 前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。
*
* @param node
*/
public void prePrint(Node node) {
if (node != null) {
System.out.print(node.data + ",");
prePrint(node.left);
prePrint(node.right);
}
}
/**
* 中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。
*/
public void inPrint(Node node) {
if (node != null) {
prePrint(node.left);
System.out.print(node.data + ",");
prePrint(node.right);
}
}
/**
* 后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点
*
* @param node
*/
public void postPrint(Node node) {
if (node != null) {
prePrint(node.left);
prePrint(node.right);
System.out.print(node.data + ",");
}
}
public static void main(String[] args) {
BinTreeTest test = new BinTreeTest();
Random r = new Random();
for (int i = 0; i < 10; i++) {
int data = r.nextInt(100);
test.createTree(test.root, data);
}
test.prePrint(test.root);
System.out.println("");
test.inPrint(test.root);
System.out.println("");
test.postPrint(test.root);
}
}