树是数据在内存中的一种常见结构,其中的二叉树呢,又是比较有代表性的;
1、区分二叉树:只有左子树和右子树,最大度数为2;
2、区分三种排序方式:先序、中序、后序---之前这个问题苦恼了很久,老是分不清该如何进行排序,尤其是三种放了一起之后,后来渐渐发现,其他这三种排序时相对于中间节点而言的,也就是双亲节点或者根节点;先序呢,就是先排中间节点,再排左节点, 再排右节点;中序呢,就是先左,后中,后右,中间节点的排序顺序在中间;后序呢,就是先左后右最后中;下边是三种排序的简单实现:
class MyTree{
private int data ; // 普通属性
private MyTree left ;
private MyTree right ;
public MyTree(int data){
this.data = data ;
}
/**
* 增加节点 小的在左,大的在右
* @param t
*/
public void add(MyTree t){
if(t.data < this.data){
if(left==null)
left = t;
else
left.add(t);
}
else{
if(right==null)
right = t;
else
right.add(t);
}
}
/**
* 先序排列 中-->左-->右
*/
public void frontSort(){
System.out.print(data+"\t");
if (left !=null) left.frontSort();
if (right !=null) right.frontSort();
}
/**
* 中序排列 左-->中-->右
*/
public void centerSort(){
if (left !=null) left.centerSort();
System.out.print(data+"\t");
if (right !=null) right.centerSort();
}
/**
* 后序排列 左-->右-->中
*/
public void endSort(){
if (left !=null) left.endSort();
if (right !=null) right.endSort();
System.out.print(data+"\t");
}
}
public class Tested {
public static void main(String[] args) {
MyTree t = new MyTree(12);
t.add(new MyTree(9));
t.add(new MyTree(5));
t.add(new MyTree(10));
t.add(new MyTree(15));
t.add(new MyTree(20));
System.out.println("先序排列:");
t.frontSort();
System.out.println();
System.out.println("中序排列:");
t.centerSort();
System.out.println();
System.out.println("后序排列:");
t.endSort();
}
}