查找树ADT
通过二叉查找树实现排序的例程
/**
* 无论排序的对象是什么,都要实现Comparable接口
*
* @param <T>
*/
public class BinaryNode<T extends Comparable<T>> {
private static int index = 0; // 排序下标
private static int len = 0; // 最大数组长度
private T t; // 根节点
private BinaryNode<T> left; // 左侧叶子节点
private BinaryNode<T> right; // 右侧叶子节点 public BinaryNode(T t) {
len++;
this.t = t;
} /**
* 往一颗书中插入值,在本质上都通过根节点一层层的判断。
* 如果根节点不存在则新建节点
* 如果根节点存在则判断应该在左侧还是在右侧插入,通常是左小右大
*
* @param t
*/
public void insert(T t) {
if (this.t.compareTo(t) > 0) {
if (this.left == null) {
BinaryNode<T> node = new BinaryNode<T>(t);
this.left = node;
} else {
this.left.insert(t);
}
} else {
if (this.right == null) {
BinaryNode<T> node = new BinaryNode<T>(t);
this.right = node;
} else {
this.right.insert(t);
}
}
} /**
* 调用私有方法
*
* @return
*/
public Comparable<?>[] order() {
Comparable<?>[] os = new Comparable[len];
order(this, os);
return os;
} /**
* 利用中序遍历查找整颗树
*
* @param bn
* @param os
*/
private void order(BinaryNode<T> bn, Comparable<?>[] os) {
if (bn.left == null) {
os[index++] = bn.t;
} else {
order(bn.left, os);
os[index++] = bn.t;
}
if (bn.right == null) {
return;
} else {
order(bn.right, os);
}
} }
查找树ADT的更多相关文章
- 查找树ADT——二叉搜索树
在以下讨论中,虽然任意复杂的关键字都是允许的,但为了简单起见,假设它们都是整数,并且所有的关键字是互异的. 总概 使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有关键字值小于 ...
- 查找树ADT——二叉查找树
二叉查找树:对于树中的每个节点X,它的左子数种所有关键字值小于X的关键字,而它的右子树种所有关键字值大于X的关键字值. /* 二叉查找树声明 */ #ifndef _TREE_H struct Tre ...
- js 查找树节点 数组去重
//查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...
- 浅谈算法和数据结构: 十 平衡查找树之B树
前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ...
- MS - 1 - 把二元查找树转变成排序的双向链表
## 1. 把二元查找树转变成排序的双向链表 ## ### 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. ### 要求不能创建任何新的结点,只调整指针的指向. 10 ...
- 数据结构:JAVA_二叉数查找树基本实现(中)
数据结构:二叉数查找树基本实现(JAVA语言版) 1.写在前面 二叉查找树得以广泛应用的一个重要原因是它能保持键的有序性,因此我们可以把它作为实现有序符号表API中的众多方法的基础. 也就是说我们构建 ...
- 转 浅谈算法和数据结构: 十 平衡查找树之B树
前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为"在计算机科学中,B树(B-tre ...
- 1.把二元查找树转变成排序的双向链表[BST2DoubleLinkedList]
[题目]:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. 比如将二元查找树 . 10 / \ 6 14 / \ / \ 4 8 12 16 转 ...
- java实现二叉树查找树
二叉树(binary)是一种特殊的树.二叉树的每个节点最多只能有2个子节点: 二叉树 由于二叉树的子节点数目确定,所以可以直接采用上图方式在内存中实现.每个节点有一个左子节点(left childre ...
随机推荐
- 加速下载gradle
http://www.jianshu.com/p/e887203e30f6 另外idea runconfiguration里边 gradle project要选项目根目录,而不是build脚本.
- 关于iis8.5中发布的网站无法连接数据库的解决方案。
发布的网站在浏览时出现如下提示: “/”应用程序中的服务器错误. 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL ...
- python学习道路(day10note)(线程,进程)
1.计算机的发展史 看alex的博客吧,了解一下可以了 2.线程与GIL简介 #线程 #一道单一的指令的控制流,寄生在进程中 #单一进程里的多个线程是共享数据的 #多个线程涉及修改共享数据的时候需要枷 ...
- python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)
1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...
- java中return与finally的执行顺序
可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定 ...
- winsock error 相关
10061-WSAECONNREFUSED 是指没有启动服务器或者说服务器没有处于监听状态.通常导致client在connect时候返回这个错误码的原因在于服务端与客户端设置的端口号没有同步转换导致( ...
- 【转载】查看freebsd 服务器硬件信息
http://3918479.blog.51cto.com/3908479/857900 查看服务器的cpu配置 Fb-bj138# dmesg | grep CPU CPU: Intel(R) Co ...
- ORM系列之二:EF(2)Code First
目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...
- python 的var_dump
from __future__ import print_function from types import NoneType __author__ = "Shamim Hasnath&q ...
- h5 与app交互
http://www.jianshu.com/p/7151987f012d JSContext *context = [self.webView valueForKeyPath:@"docu ...