二叉树的原理分析:
树是一种重要的非线性数据结构,直观来看,它是数据元素(在树中称为节点)按分支关系组织起来的结构
二叉树是每个节点最多有两个子树的有序树。通常被称为"左子树"和"右子树"
二叉树算法排序规则:
1、选择第一个元素作为根节点
2、之后如果元素大于根节点放在右子树,如果元素小于根节点放在左子树
3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
package ListPackage;
public class BianTree {
private Node root;//根节点
// 这里的增加方法是当树中没有数据的时候才会添加
public void add(int data){
if(root == null){
root = new Node(data);
}else{
root.addNode(data);
}
}
// 不等于空说明本身里面就有数据就不需要进进行添加可以直接打印
public void print(){
if(root != null){
root.printNode();
}
}
class Node{ //类中类
private int data;//当前节点
private Node left;//左子树
private Node right;//右子树
public Node(int data){
this.data = data;
}
/*
* 二叉树排序-插入数据
* 插入基本逻辑是,小、相同的放左边,大的放右边
*
* 二叉树排序-遍历
* 二叉树的遍历分左序,中序,右序
左序即: 中间的数遍历后放在左边
中序即: 中间的数遍历后放在中间
右序即: 中间的数遍历后放在右边
* */
public void addNode(int data){
if(this.data > data){
if(this.left == null){
this.left = new Node(data);
}else{
this.left.addNode(data);
// 递归调用(自己调自己)
}
}else{
if(this.right == null){
this.right = new Node(data);
}else{
this.right.addNode(data);
}
}
}
// 输出节点(按照什么方式打印)
public void printNode(){
if(this.left != null){
this.left.printNode();
}
System.out.print(this.data + " ");
if(this.right != null){
this.right.printNode();
}
}
}
public static void main(String[] args){
// 二叉树排序-插入
int randoms[] = new int[] {67, 7, 30, 73, 10, 0, 78, 81, 10, 74};
BianTree roots = new BianTree();
for (int i : randoms) {
roots.add(i);
}
//这里的输出结果是从小到大排序的
roots.print();
}
}