二叉树的原理分析
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构。二叉树是每个结点最多有两个子树的有序树。通常子树被称为“左子树”和“右子树”。
二叉树算法排序规则:
- 选择第一个元素作为根节点
- 之后如果元素大于根节点放在右子树,如果元素小于根节点放在左子树
- 最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
实例代码:
public class BinaryTree {
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.data <= data){
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 class BinaryTreeDemo {
public static void main(String[] args) {
BinaryTree bt = new BinaryTree();
bt.add(8);
bt.add(3);
bt.add(10);
bt.add(1);
bt.add(6);
bt.add(14);
bt.add(4);
bt.add(7);
bt.add(13);
bt.print();
}
}