二叉树实现排序
树是一种非线性数据结构,直接观看,它是数据元素(在树种称为结点)按分支关系组织起来的结构,二叉树(Binart Tree)是每个节点最多有两个子树的有序树。通常子树被称做为“左子树”和“右子树”
二叉树算法的排序规则:
1.选择第一个元素作为跟节点
2.之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
3.最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
代码实现:
基于内部类+递归
public class Test1 { public static void main(String[] args) { BinaryNode node = new BinaryNode(); node.add(8); node.add(3); node.add(10); node.add(1); node.add(6); node.add(14); node.add(13); node.print(); } } class BinaryNode { private Node node;// 开始节点 // 添加节点 public void add(int date) { if (node == null) { node = new Node(date); } else { node.add(date); } } // 打印节点 public void print() { if (node != null) { node.print(); } } private static class Node { private final int date; private Node left; private Node right; public Node(int date) { this.date = date; } // 添加节点 public void add(int date) { if (date > this.date) { if (this.right == null) { this.right = new Node(date); } else { this.right.add(date); } } else { if (this.left == null) { this.left = new Node(date); } else { this.left.add(date); } } } // 打印节点 public void print() { if (this.left != null) { this.left.print(); } System.out.print(this.date + "->"); if (this.right != null) { this.right.print(); } } } }
运行结果:
1->3->6->8->10->13->14->