刚刚看了一下数据结构,有了些兴致实现一下Java中的二叉树。因为二叉树涉及到的主要知识是二叉树的遍历,所以这里简单实现一下。
先定义一下二叉树的节点类如下:
class Tree{
//定义一颗二叉树
Tree leftTree;//定义左子树
Tree rightTree;//定义右子树
Object data;//定义存储的数据
Tree(){}
//省略getter/setter/private....别这样
}
接下来写主类
public class MyTree{
private Tree root;//定义一个根树root
public void list(Tree root) {
if(root == null) {
//根节点为空就不遍历了,因为采用递归,并不总是是根节点root,名称而已
return;
}else {
//根据以下三者的顺序可以组成前序,中序和后序遍历
//这里是前序遍历
System.out.print(root.data +", ");
if(root.leftTree != null){
list(root.leftTree);
}
if(root.rightTree !=null) {
list(root.rightTree);
}
}
//主要代码就是这段递归,非递归实现现在没有思路
}
public static void main(String argc[]) {
MyTree mt = new MyTree();
//为这颗树添加内容
Tree t1 = new Tree();
t1.data = "a";
Tree t2 = new Tree();
t2.data = "b";
Tree t3 = new Tree();
t3.data = "c";
Tree t4 = new Tree();
t4.data = "d";
Tree t5 = new Tree();
t5.data = "e";
Tree t6 = new Tree();
t6.data = "f";
Tree t7 = new Tree();
t7.data = "g";
//为树与树之间创建关联
t1.leftTree = t2;
t1.rightTree = t5;
t2.leftTree = t3;
t2.rightTree = t4;
t5.rightTree =t6;
t6.leftTree = t7;
//开始从根节点遍历
mt.list(t1);
}
}
输出结果:
Compiling MyTree.java......
------------
a, b, c, d, e, f, g,
end:
如果有其它想要实现的数据结构,欢迎一起讨论与实现