您的位置:首页 > 理论基础 > 数据结构算法

JAVA数据结构---二叉树入门

2016-03-16 18:04 549 查看
本程序分为四个文件:

节点类:Node.java

二叉树类:BinaryTree.java

访问类:Visit.java

主类测试:MainTest.java

(1)Node.java

public class Node<T> {

public T data;
private Node<T> left;
private Node<T> right;

// 初始化构造
public Node() {
left = null;
right = null;
}

public Node(T tt, Node<T> lef, Node<T> rig) {
data = tt;
left = lef;
right = rig;
}

// get方法
public T getT() {
return data;
}

public Node<T> getLeft() {
return left;
}

public Node<T> getRight() {
return right;
}

}


(2)BinaryTree.java

public class BinaryTree<T> {
private Node<T> root;

private void preOrder(Node<T> t, Visit vs) {
if (t != null) {
vs.print(t.data);
preOrder(t.getLeft(), vs);
preOrder(t.getRight(), vs);
}
}

private void midOrder(Node<T> t, Visit vs) {
if (t != null) {
midOrder(t.getLeft(), vs);
vs.print(t.data);
midOrder(t.getRight(), vs);
}
}

private void postOrder(Node<T> t, Visit vs) {
if (t != null) {
postOrder(t.getLeft(), vs);
postOrder(t.getRight(), vs);
vs.print(t.data);
}
}

public BinaryTree() {
root = null;
}

public BinaryTree(T tt, BinaryTree<T> lef, BinaryTree<T> rig) {
Node<T> l, r;
if (lef == null)
l = null;
else
l = lef.root;

if (rig == null)
r = null;
els
4000
e
r = rig.root;

root = new Node<T>(tt, l, r);
}

public void preOrder(Visit vs) {
preOrder(root, vs);
}

public void midOrder(Visit vs) {
midOrder(root, vs);
}

public void postOrder(Visit vs) {
postOrder(root, vs);
}

}


(3)Visit.java

public class Visit {

public void print(Object item) {
System.out.print(item + " ");
}

}


(4)MainTest.java

public class MainTest {

public static void main(String[] args) {

BinaryTree<String> g = new BinaryTree<String>("G", null, null);
BinaryTree<String> d = new BinaryTree<String>("D", null, g);
BinaryTree<String> b = new BinaryTree<String>("B", d, null);
BinaryTree<String> e = new BinaryTree<String>("E", null, null);
BinaryTree<String> f = new BinaryTree<String>("F", null, null);
BinaryTree<String> c = new BinaryTree<String>("C", e, f);
BinaryTree<String> a = new BinaryTree<String>("A", b, c);

Visit vs = new Visit();
System.out.println("前序遍历的结果是:");
a.preOrder(vs);
System.out.println();

System.out.println("中序遍历的结果是:");
a.midOrder(vs);
System.out.println();

System.out.println("后序遍历的结果是:");
a.postOrder(vs);
System.out.println();
}

}


(5)测试结果

前序遍历的结果是:
A B D G C E F
中序遍历的结果是:
D G B A E C F
后序遍历的结果是:
G D B E F C A
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: