出题:要求实现层序遍历二元搜索树,并对比BFS与DFS的区别分析:层序遍历也就是由上至下,从左到右的遍历每一层的节点,类似于BFS的策略,使用Queue可以实现,BFS不能用递归实现(由于每一层都需要存储所有节点,所以非常耗用内存)。这段代码主要用于反映BFS与DFS的联系;解题:
1 class....
分类:
其他好文 时间:
2014-05-27 01:11:41
阅读次数:
398
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。分析:首先不能创建新的结构,只能在树的前提下进行改变指针的指向。又由于是二叉搜索树,可以通过画图分析可知,二叉搜索树的左子树小于根节点小于右子树,可以发现是个递归过程也是一个中序遍...
分类:
其他好文 时间:
2014-05-26 08:01:04
阅读次数:
169
今天实现二叉搜索树的时候因为指针的问题卡了一上午(实在不应该。。。),一直segmentation
fault,个人感觉还是需要记录一下的。首先贴一下做的题的意思:输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。(jobdu
1201)题目很简单,就是基本的二叉树的建立,最后代码如下 ....
分类:
编程语言 时间:
2014-05-24 01:02:05
阅读次数:
273
1、
??
Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
分析:将一个升序排列的链表转换为平衡二叉搜索树,采用递归的方式,先找到链表...
分类:
其他好文 时间:
2014-05-22 12:33:30
阅读次数:
270
剑指offer上的第24题,主要考察递归思想,九度OJ上AC。
题目描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
输入:
每个测试案例包括2行:
第一行为1个整数n(1<=n<=10000),表示数组的长度。
第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。
输出:
对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。
样例输入:
7
5 7...
分类:
其他好文 时间:
2014-05-22 11:22:32
阅读次数:
229
用静态链表(数组)去解这道二叉搜索树的题目。无需使用链表、指针,无需自定义结点类型,操作简单。仅仅是将空间上的二叉搜索树映射到一维数组上。...
分类:
其他好文 时间:
2014-05-22 07:20:53
阅读次数:
209
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同分析:由后序遍历可以知道最后一个数字是树的根节点,而二叉搜索树的性质可以知道其左边的节点值小于根节点的值,右边的节点值大于根节点的值。由此递归。/*剑指...
分类:
其他好文 时间:
2014-05-22 00:36:31
阅读次数:
305
实现操作
(1)二叉搜索树的建立
(2)二叉搜索树的插入
(3)二叉搜索树的三种递归遍历(前序、中序和后续)
(4)二叉搜索树的三种非递归遍历(前序、中序和后续)
(5)二叉搜索树的逐层打印
有时间再实现:
(6)二叉搜索树的前驱和后继查找
(7)二叉搜索树的删除
源码分析:
#include
#include
#include
using namespace st...
分类:
编程语言 时间:
2014-05-18 10:28:47
阅读次数:
492
红黑树是一个二叉搜索树,具有如下规则:
每个节点不是红色就是黑色。根节点必须为黑色。如果节点为红,其子节点必须为黑,父子节点不得同时为红。任一节点至NULL(NULL为黑色)的任何路径,所含黑节点数必须相同。
根据规则4,新增节点必须为红。
根据规则3,新增节点的父节点必须为黑。
因为新增节点必须是红,那么只有在父节点不为黑的时候才需要调整,父节点为黑则无需调整。
着...
分类:
其他好文 时间:
2014-05-14 15:29:28
阅读次数:
287