二叉树:
二叉树的三种遍历:
前序遍历:a b d g c e f
中序遍历:d g b a e c f
后序遍历:g d b e f c a
二叉树结点类:
//树结点
public class TreeNode {
private TreeNode left;
private TreeNode right;
private Object data;
public TreeNode(){
left = null;
right = null;
}
public TreeNode(Object obj,TreeNode left,TreeNode right) {
data = obj;
this.left = left;
this.right = right;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
二叉树类:
public class Tree {
private TreeNode root;
public Tree() {
root = null;
}
public Tree(Object obj,Tree left,Tree right) {
TreeNode l = null, r = null;
if(left == null)
l = null;
else
l = left.root;
if(right == null)
r = null;
else
r = right.root;
root = new TreeNode(obj,l,r);
}
//前序遍历
public void preOrder(TreeNode t) {
if(t != null) {
System.out.print(t.getData()+" ");
preOrder(t.getLeft());
preOrder(t.getRight());
}
}
//中序遍历
public void inOrder(TreeNode t) {
if(t != null) {
inOrder(t.getLeft());
System.out.print(t.getData()+" ");
inOrder(t.getRight());
}
}
//后序遍历
public void postOrder(TreeNode t) {
if(t != null) {
postOrder(t.getLeft());
postOrder(t.getRight());
System.out.print(t.getData()+" ");
}
}
public void preOrder() {
preOrder(root);
}
public void inOrder() {
inOrder(root);
}
public void postOrder() {
postOrder(root);
}
}
二叉树的测试:
public class TreeTest0 {
public static void main(String[] args) {
Tree g = new Tree("g",null,null);
Tree f = new Tree("f",null,null);
Tree e = new Tree("e",null,null);
Tree d = new Tree("d",null,g);
Tree c = new Tree("c",e,f);
Tree b = new Tree("b",null,d);
Tree a = new Tree("a",b,c);
a.preOrder();
System.out.println();
a.inOrder();
System.out.println();
a.postOrder();
System.out.println();
}
}