二叉树有三种遍历:
1. 先序遍历: (根左右)
2.中序遍历 : (左根右)
3.后序遍历: (左右根)
举个例子:(以下动画图转载自https://blog.youkuaiyun.com/chinesekobe/article/details/110874773):
先(根)序遍历(根左右):A B D H I E J C F K G
中(根)序遍历(左根右) : H D I B E J A F K C G
后(根)序遍历(左右根) : H I D J E B K F G C A
用面向对象方法写二叉树:
node节点类
package array3;
public class node {
public int data;
public node leftNode;
public node rightNode;
//添加节点
public void addNode(node t) {
// 添加节点的时候 去比较节点中data 如果t的data小于 this.data
// 添加左边节点 如果大于 添加右边节点
if(t.data <this.data) {
// 如果左边节点为null t就是左节点,不为null 就在左节点基础之上
// 再次添加
if(leftNode == null) {
leftNode = t;
}else {
leftNode.addNode(t);
}
}
else {
if(t.data > this.data) {
if(rightNode == null) {
rightNode = t;
}else {
rightNode.addNode(t);
}
}
}
}
//中序排序
public void zhongxu() {
if(leftNode!=null) {
leftNode.zhongxu();
} System.out.println(data);
if(rightNode!=null) {
rightNode.zhongxu();
}
}
}
mytree类
package array3;
public class mytree {
private node root;
public void add(int x) {
node p = new node();
p.data = x;
if(root ==null) {
root = p;
}else {
root.addNode(p);
}
}
public void sort() {
if(root==null) {
return;
}else {
root.zhongxu();
}
}
}
测试类test:
package array3;
public class test {
public static void main(String[] args) {
mytree my = new mytree();
my.add(0);
my.add(2);
my.add(4);
my.add(3);
my.add(6);
my.add(7);
my.add(1);
my.sort();
}
}
结果为:
0
1
2
3
4
6
7