与链表、堆栈和队列不一样,二叉查找树不是线性数据结构,是二维数据结构。每个节点都包含一个LeftNode和RightNode,二叉查找树把比节点数据项小的数据放在LeftNode,把比节点数据项大的数据放在RightNode。 关于节点的类。 public class TreeNode { publ...
分类:
其他好文 时间:
2014-08-07 18:33:50
阅读次数:
252
二叉查找树BST----java实现
1.二叉查找树简介
二叉查找树又名二叉搜索树和二叉排序树。性质如下:
在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点(no dupl...
分类:
编程语言 时间:
2014-08-07 03:07:38
阅读次数:
418
给定一颗二叉查找树,给定一个值value,求该二叉查找树中不小于某个值value的最小数值。思考:二叉查找树的特征就是左子节点比父节点值小,右子节点比父节点值大。在获得该二叉查找树根节点的情况下,想要得到该二叉查找树中不小于某个值得最小数值,分以下几点考虑:1.如果currentNode.getDa...
分类:
其他好文 时间:
2014-08-06 22:46:32
阅读次数:
577
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. L...
分类:
其他好文 时间:
2014-08-03 23:03:06
阅读次数:
273
package com.iflytek.tree;
import java.util.Random;
/**
* 二叉查找树
* @author fgtian
*
*/
public class BinaryTree {
public static class BinaryTreeNode {
int mValue; // 数值:以int代替,可以扩展成其他的
Binary...
分类:
其他好文 时间:
2014-08-03 18:09:35
阅读次数:
211
二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。同二叉查找树一样,堆也有两个性质,即结构性和堆序性。对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿子在左儿子后的单元2i+1中,它的父亲在[i/2](向下取整)中。因此,一个数据结构将由一个数组、....
分类:
其他好文 时间:
2014-08-03 12:30:25
阅读次数:
324
/************************************************************************* root 根节点的 父亲节点 设为NULL ...
分类:
其他好文 时间:
2014-08-02 18:14:23
阅读次数:
267
查找树是一种数据结构,二叉查找树是按二叉树结构来组织的。可以用链表结构表示,其中每一个结点就是一个对象。结点中包括:key、数据、left、right、p。其中left、right和p分别指向左儿子,右儿子和父结点。 二叉查找树中的关键字总是满足二叉查找树的性质:y是x左子树上的结点,则key...
分类:
其他好文 时间:
2014-08-01 15:31:41
阅读次数:
219
二叉排序树
二叉排序树是一个基础的树的数据结构。应用非常多。它的特性就是,左孩子小于parent,右孩子大于parent.
寻找节点
寻找节点就是直接根据数值的大小,从root节点开始遍历,大于当前遍历节点就向它的右子树查找,相反则查找它的左子树。然后返回。
查找最大最小节点
直接根据root节点,遍历到最右就是最大节点,遍历到最左,就是最小节点。
插入节点
...
分类:
其他好文 时间:
2014-08-01 00:01:20
阅读次数:
247
题目:Given an array where elements are sorted in ascending order, convert it to a height balanced BST.题解:先复习下什么是二叉搜索树(引自Wikipedia):二叉查找树(Binary Search ....
分类:
编程语言 时间:
2014-07-31 05:21:55
阅读次数:
215