#include
struct BSTNode
{
int m_nval; //数据域
BSTNode *m_pleft; // 左孩子节点
BSTNode *m_pright; //右孩子节点
};
/************************************************************************
功能:在二叉排序树中 查找key值,...
分类:
其他好文 时间:
2014-06-15 12:14:04
阅读次数:
228
问题:
给定的二叉查找树中,有两个节点不小心被调换了位置,现在需要将其修正,不改变树的结构。
分析:
二叉排序树的中序遍历是有序的,所以这个问题又是建立在中序遍历模板上的问题,所以我们可以对其进行中序遍历,并用一个pre指针指向当前遍历结果中的最后一个结点,即下次遍历前的前一个结点。然后就可以通过将当前结点与pre结点进行比较,来判断是否有序了。若乱序,就将这两个结点都放入到预先定义的容器中...
分类:
其他好文 时间:
2014-06-10 10:54:41
阅读次数:
153
题目链接判断一颗二叉树是否是二叉搜索树(二叉排序树),也就是BST如果该二叉树是BST, 那么对其中序遍历,所得序列一定是单调递增的(不考虑有重复数值的情况)附上代码:
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 *...
分类:
其他好文 时间:
2014-06-07 11:28:18
阅读次数:
254
转自:
http://blog.chinaunix.net/uid-22663647-id-1771796.html1.二叉排序树的定义 二叉排序树(Binary
Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质....
分类:
编程语言 时间:
2014-06-06 15:03:27
阅读次数:
276
数据结构中为了存储和查找的方便,用各种树结构来存储文件,本章就浅谈一下各种树的表示方法、特点及各自的用途,本章设计的树结构包括:二叉查找树(二叉排序树)、平衡二叉树(AVL树)、红黑树、B-树、B+树、字典树(trie树)、后缀树、广义后缀树。1、二叉查找树(二叉排序树)
(图a)二叉查找树是...
分类:
其他好文 时间:
2014-06-05 17:38:44
阅读次数:
319
介绍:二叉排序树是以一定的规则排列树中元素,因而可以进行快速的排序和查询的树状数据结构,一般规则是:对于树中任意一个节点,左孩子严格小于根,根严格小于右孩子,有点像大根堆。(只是大根堆中左右孩子关系并不确定,且和根的关系是统一的,而且有上浮和下沉操作使得大根堆总是一棵完全二叉树,其不断弹出堆顶形成有序列的过程叫做堆排序。虽然二叉排序树中也有旋转操作使得树尽量平衡,但是由于数值大小分明的左右孩子,在...
分类:
其他好文 时间:
2014-06-03 01:01:17
阅读次数:
313
二叉查找树一般采用二叉链表作为其存储结构,我们这次也采用这样的实现。二叉查找树一般有查找、插入和删除等操作,其中查找是基础,没有查找,插入和删除则无从谈起;而删除算是难点,需处理四种不同的情况,分别是:
无左右孩子,(采取直接删除,须处理其父节点指针)
只有左孩子,(采取其父节点指针指向其左孩子)
只有右孩子、(采取其父节点指针指向其右孩子)
左右孩子都存在,(采取以直接前驱或直接后继代替...
分类:
其他好文 时间:
2014-06-03 00:35:52
阅读次数:
254
9.4选择类排序法选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。我们主要介绍简单选择排序、树型选择排序和堆排序。简单选择排序简单选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最...
分类:
其他好文 时间:
2014-06-02 01:42:56
阅读次数:
256
堆排序算法使用二叉堆实现排序,树上的每一个节点对应数组中的一个元素。第一步:使用MAX_HEAPIFY维护一个最大堆(所有孩子节点都必须小于或等于其父节点)。它的输入为一个数组A和一下标i,调用MAX_HEAPIFY时,假设节点i的左右子树都是最大堆。伪码:
1 LEFT(i) 2 return.....
分类:
其他好文 时间:
2014-05-29 21:35:08
阅读次数:
364
思路:这道题目关键在于不能创建新的节点,如不然,我们可以直接将二叉排序树中序遍历保存到一个数组中,而后再建立一个双性链表,将数据保存到双向链表里。
这里不能创建新节点,我们只能改变节点的指向左右子树的节点,让其变为指向二叉链表中的前后节点,很明显这里同样用的是中序遍历,因此这道题目依然是中序遍历的变种,中序递归构造实现即可,每次递归都保存一个指向已构造好的双向链表的尾节点的指针,将其与下一个节点连接起来。
另外,这道题OJ的输出格式与前面的不同,输出样例中又没有说明,我试了三次才AC,前两次...
分类:
其他好文 时间:
2014-05-26 05:21:59
阅读次数:
189