二叉树有三种遍历:
1. 先序遍历: (根左右)
2.中序遍历 : (左根右)
3.后序遍历: (左右根)
举个例子:(以下动画图转载自https://blog.csdn.net/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