二叉搜索树或是一颗空二叉树, 或是具有以下性质的二叉树:
1.若左子树不为空, 则左子树上所有结点的关键字值均小于根结点的关键字值.
2.若右子树不为空, 则右子树上所有结点的关键字值均大于根结点的关键字值.
3.左右子树也分别是二叉搜索树.
性质: 若以中序遍历一颗二叉搜索树, 将得到一个以关键字值递增排列的有序序列.
1.搜索实现: 若二叉树为空, 则搜索失败. 否则...
分类:
其他好文 时间:
2015-11-18 18:06:24
阅读次数:
175
题目来源:九度教程第36题九度提供的算法设计思路是:对输入的数字序列构建二叉排序树,并对它们进行前序和中序的遍历,依次比较遍历结果是否相同,若相同则说明两棵二叉排序树相同,否则不同。这个设计思路是没有问题的,但是有点画蛇添足的成份。那么这个“蛇足”是什麽呢?试想一下二叉排序树的性质,如果对二叉排序树...
分类:
其他好文 时间:
2015-11-18 15:50:10
阅读次数:
171
18.1 进程的默认堆(1)堆的特点 ①不必考虑分配粒度和页面边界问题,但分配和释放内存的速度比其他方式慢 ②堆是系统从页交换文件中预订的一块地址空间,系统会负责调拨和撤销调拨物理存储器。(2)进程默认堆 ①进程初始化时,系统会在进程地址空间中一个特殊的区域,这个区域为进程的默认堆(默认为1M...
分类:
其他好文 时间:
2015-11-08 14:52:36
阅读次数:
185
一、AVL树 AVL树是一种平衡查找树,在前面的两篇文章:二叉搜索树和红黑树中都提到过。由于二叉搜索树在某些特殊情况下是不平衡的(任意一个结点深度过大),因此其一些动态集合操作在最坏情况下的时间复杂度为O(n)。因此提出一些对二叉搜索树效率改进的树结构使最坏时间复杂度降为O(lgn),AVL树和红....
分类:
其他好文 时间:
2015-11-02 19:23:00
阅读次数:
223
图解二叉搜索树概念二叉树呢,其实就是链表的一个二维形式,而二叉搜索树,就是一种特殊的二叉树,这种二叉树有个特点:对任意节点而言,左孩子(当然了,存在的话)的值总是小于本身,而右孩子(存在的话)的值总是大于本身。下面来介绍在此种二叉树结构上的查找,插入,删除算法思路。查找:因为这种结构就是为了来方便查...
分类:
编程语言 时间:
2015-10-30 09:15:03
阅读次数:
277
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树。但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快;即当树的高度较高(甚至一种极端情况是树变成了1条链)时,这些集合操作并不比在链表上执行的快。 于是我们需要构建出一种“平衡”的二叉搜索树...
分类:
编程语言 时间:
2015-10-29 23:16:45
阅读次数:
349
二分搜索树是一种设计良好的有序集合,在平衡的情况下,查找search,插入insertion,删除deletion都具有O(logn)的计算时间。本文讨论实现二分搜索树的具体细节。二分搜索树的每个结点包含key域,以及至多两个孩子结点,并且左孩子小于当前结点的值,右孩子大于当前结点值。为了方便操作,...
分类:
其他好文 时间:
2015-10-29 00:24:38
阅读次数:
317
Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.首先是O(N)空间的方法,用递归: 1 /** 2 * Definit....
分类:
其他好文 时间:
2015-10-28 22:29:11
阅读次数:
240
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。这题做了好久,但是后面看来并不是想象中那么难。例如一棵树其实链表的顺序就是这棵树中根遍历的顺序,所以我想到了用递归或者非递归。非递归的做法就是用栈对这棵树进行中根遍历,用栈进行中根遍历的...
分类:
其他好文 时间:
2015-10-28 15:37:21
阅读次数:
261
Givenn, how many structurally uniqueBST's(binary search trees) that store values 1...n?For example,Givenn= 3, there are a total of 5 unique BST's. 1.....
分类:
其他好文 时间:
2015-10-27 13:15:16
阅读次数:
242