算法:comparable比较器的排序原理实现(二叉树中序排序)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法:comparable比较器的排序原理实现(二叉树中序排序),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1786字,纯文字阅读大概需要3分钟。
内容图文
Comparable比较器排序远离实现
package test.java.api.api13; /** * 手工实现二叉树的比较算法: 第一遍感觉很神秘,但是真正自己写下来,就感觉很简单,理解就好: 主要一下两点: 第一点:【设置一个根节点】 * 第二点:新增节点处理:比根节点小,放在左子树(如果左子树不存在,直接放在左子树,如果存在,用已经存在的左子树的节点递归调用) * 第三点:新增节点处理:比根节点大或等于,放在右子树(如果右子树不存在,直接放在右子树,如果存在,用已经存在的右子树的节点递归调用) * 第四点:打印输出:已经排好序的数据用中序遍历:左→根→右,进行输出 * * @author gmq * @dateTime 2015/11/1 * */ public class ComparableDemo03 { public static void main(String[] args) { BinaryTree<Integer> bt = new BinaryTree<Integer>(); bt.add(8); bt.add(7); bt.add(6); bt.add(11); bt.add(8); bt.add(9); bt.add(3); System.out.println("排序之后的结果:"); bt.print(); } } /** * 二叉树算法类 * * @author gmq * */class BinaryTree<T> { class Node { // 声明一个节点类Nodeprivate Comparable<T> data; // 保存具体的内容private Node left; // 左子树private Node right; // 右子树public Node(Comparable<T> data) { this.data = data; } publicvoid addNode(Node newNode) { // 确定是放在左子树还是右子树if (newNode.data.compareTo((T) this.data) < 0) { // 内容小,放在左子树if (this.left == null) { // 判断左子树是否存在this.left = newNode; // 直接将新的节点设为左子树 } else { this.left.addNode(newNode); // 继续向下判断 } } if (newNode.data.compareTo((T) this.data) >= 0) { // 放在右子树if (this.right == null) { // 判断右子树是否存在this.right = newNode; // 右子树不存在:直接将新的节点放在右子树 } else { this.right.addNode(newNode); // 继续向下判断 } } } publicvoid print() { // 输出的时候采用中序遍历: 左→根→右 // 先遍历左节点if (this.left != null) { left.print(); } // 再遍历根节点 System.out.print(this.data + "\t"); // 最后遍历右节点if (this.right != null) { this.right.print(); } } } private Node root; // 跟节点publicvoid add(Comparable<T> data) { Node newNode = new Node(data); if (root == null) { root = newNode; } else { root.addNode(newNode); } } publicvoid print() { this.root.print(); // 通过根节点输出 } }
原文:http://www.cnblogs.com/gmq-sh/p/4928721.html
内容总结
以上是互联网集市为您收集整理的算法:comparable比较器的排序原理实现(二叉树中序排序)全部内容,希望文章能够帮你解决算法:comparable比较器的排序原理实现(二叉树中序排序)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。