package cn.com.tree;
/**
* 二叉树类
*
*/
public class Tree {
public String data;//数据
public Tree leftChild;
public Tree rightChild;
public Tree(String data) {
super();
this.data = data;
}
public Tree( String data, Tree leftChild, Tree rightChild, boolean visited) {
super();
this.data = data;
this.leftChild = leftChild;
this.rightChild = rightChild;
}
}
package cn.com.tree;
public class Test2 {
private Tree tree = null;
public Test2(){
tree = new Tree("A"); //构建一个父节点
}
/**
* 创建一个树
* A
* B C
* D E F G
* @param tree
*/
public void createTree(Tree tree){
Tree tB = new Tree("B");
Tree tC = new Tree("C");
Tree tD = new Tree("D");
Tree tE = new Tree("E");
Tree tF = new Tree("F");
Tree tG = new Tree("G");
tree.leftChild = tB;
tree.rightChild = tC;
tree.leftChild.rightChild = tE;
tree.leftChild.leftChild = tD;
tree.rightChild.rightChild = tG;
tree.rightChild.leftChild = tF;
}
/**
* 获取访问的数据
*/
public void getData(Tree tree){
System.out.print(tree.data+"-");
}
/**
* 前序遍历
* @param tree
*/
public void preVisit(Tree tree){
if(tree==null){
return;
}
getData(tree);
preVisit(tree.leftChild);
preVisit(tree.rightChild);
}
/**
* 中序遍历
* @param tree
*/
public void innnerVisit(Tree tree){
if(tree==null){
return;
}
innnerVisit(tree.leftChild);
getData(tree);
innnerVisit(tree.rightChild);
}
/**
* 后序遍历
* @param tree
*/
public void lastVisit(Tree tree){
if(tree==null){
return;
}
lastVisit(tree.leftChild);
lastVisit(tree.rightChild);
getData(tree);
}
/**
* 测试
* @param args
*/
public static void main(String[] args){
Test2 test = new Test2();
test.createTree(test.tree);
System.out.println("先序遍历");
test.preVisit(test.tree);
System.out.println("中序遍历");
test.innnerVisit(test.tree);
System.out.println("后序遍历");
test.lastVisit(test.tree);
}
}
测试结果:
先序遍历
A-B-D-E-C-F-G-中序遍历
D-B-E-A-F-C-G-后序遍历
D-E-B-F-G-C-A-