题目链接:hdu 3308 LCIS
题目大意:给定一个序列,两种操作:
Q l r:查询区间l,r中的最长连续递增序列长度U p x:将位置p上的数改成x
解题思路:线段树上的区间合并,这是在左右子树合并的时候要判断一下是否满足递增即可。
#include
#include
#include
using namespace std;
const int maxn =...
分类:
其他好文 时间:
2014-10-01 14:47:51
阅读次数:
243
一:平衡二叉树特点:平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树: (1)左右子树深度之差的绝对值不超过1; (...
分类:
其他好文 时间:
2014-09-25 22:12:17
阅读次数:
284
第七章解决二叉树的编程问题二叉树是n(≥0)个有限元素的集合,该集合或者为空,或者由一个称为根的元素及两个不相交的,被称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树,在二叉树中一个元素也称为一个结点。二叉树是有序的,即将其左右子树颠倒,就成..
分类:
其他好文 时间:
2014-09-24 19:47:18
阅读次数:
246
数据结构在自考的时候学过,所以一些简单的概念大概了解,可是必然考纲不一样,所以在软考中还是会有一些陌生的知识,如今就说一下平衡二叉树一、什么是平衡二叉树依据二叉树的基本概念可想到:平衡二叉树的左右子树都是平衡二叉树;除此之外,左子树和右子树的高度差的绝对值不能超过1二、平衡二叉树的作用由于在二...
分类:
其他好文 时间:
2014-09-21 22:14:01
阅读次数:
294
1.二叉排序树的概念:二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树, 或者是一棵具有例如以下性质的二叉树: ⑴ 若它的左子树非空,则左子树上全部结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上全部结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树...
分类:
其他好文 时间:
2014-09-18 14:39:13
阅读次数:
260
题目描述:
二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:
1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
3. 左、右子树本身也是一颗二叉排序树。
现在给你N个关...
分类:
其他好文 时间:
2014-09-17 16:50:22
阅读次数:
155
题目链接:uva 10821 - Constructing BST
题目大意:给定节点个数以及树的高度,求一个字典序最小的插入顺序,使得生成的BST高度为H。
解题思路:根据H来确定说左右子树的节点个数,因为要求字典序尽量小,所以右子树的节点个数应该尽量多。
#include
#include
#include
using namespace std;
int N, H;...
分类:
其他好文 时间:
2014-09-16 17:28:21
阅读次数:
254
二叉树本来就是递归定义的,如果对递归还不是特别了解,建议看一下《001.深入浅出解释[递归]》
写一个递归函数很简单,只需要记住下面2点:
1、递归中止条件:对于二叉树来说一般是node==null的时候判断到了叶子结点
2、递归函数:;描述一个中间过程,然后用代码实现,调用自身的时候传递的参数就是你想要递归的方式。
下面的代码就是一个二叉树的创建、先中后序遍历、树的深度、左右子树的互换的过程...
分类:
其他好文 时间:
2014-09-16 12:40:10
阅读次数:
222
二叉树查找特定节点:
1.节点的深入最小->递归深度,循环数组最小
2.节点为孩子节点->左右子树而空
3.节点位于最右侧 ->每层最右侧...
分类:
其他好文 时间:
2014-09-15 13:00:39
阅读次数:
193
这是利用treap写的二叉排序树,只要理解其中旋转能够改变树的左右子树平衡度,即高度之差,差不多就能掌握treap树的要领了。相对于其他高级BST,treap树实现应该算最简单了,利用的是随机树产生的理论的二叉排序树时间复杂度为O(nlgn)来实现,具体证明 算法导论 中有。推荐NOCOW中的讲解,...
分类:
其他好文 时间:
2014-09-11 20:52:12
阅读次数:
316