树和二叉树
文章平均质量分 62
__Hiro__
这个作者很懒,什么都没留下…
展开
-
二叉搜索树
在计算机术语中,二叉搜索树又叫二叉查找树、二叉排序树。二叉搜索树(Binary Search Tree)的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树。 这个是百度百科上的一个定义,个人认为还是比较易懂的,简单点来说二叉搜索树原创 2017-03-19 15:01:01 · 1191 阅读 · 1 评论 -
树状数组初探
前言在前一篇文章:线段树初探 中我们看了一下线段树的基本思想并且知道了线段树擅长于解决区间问题。其实对于某些区间问题,我们不仅可以用线段树解决,还可以用树状数组解决。那么可能有小伙伴要问了,那既然线段树和树状数组都可以解决某些区间问题,那么我就一直用线段树就好了啊,为什么还要学树状数组呢?对于这个问题,我这里能给的答案是:对于两者都能解决的区间问题,两者所用的时间复杂度都是O(logn),树状...原创 2018-03-03 19:08:26 · 323 阅读 · 0 评论 -
PAT--L2-004. 这是二叉搜索树吗?
题目链接:https://www.patest.cn/contests/gplt/L2-004时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树...原创 2017-06-09 13:51:38 · 859 阅读 · 0 评论 -
线段树初探
前言先从一个问题说起:假设现在有 n 个数,编号为 0 ~ n-1。现在,每一次会给你一个区间 [a, b] (0 <= a <= b < n),要求给出这 n 个数中编号在区间 [a, b] 中的数字的和、区间 [a, b] 中的最大数字。题目并不难,我们用一个数组储存这 n 个数字,然后对于每一个给定的 [a, b] 我们用一个循环就可以求出区间 [a, b] 中...原创 2018-02-26 23:59:33 · 502 阅读 · 0 评论 -
PAT--L2-020. 功夫传人
题目链接:https://www.patest.cn/contests/gplt/L2-020题目描述:一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。这里我们来考察某一原创 2017-06-22 22:25:00 · 1003 阅读 · 0 评论 -
二叉树的四种遍历算法
二叉树在作为一种重要的数据结构,它的很多算法的思想在很多地方都用到了,比如说大名鼎鼎的 STL 算法模板,里面的优先队列(priority_queue)、集合(set、map)等等都用到了二叉树里面的思想,如果有兴趣的小伙伴可以去查找一些这些方面的资料。但是我们现在先不讨论那么高深的数据结构,我们先从二叉树的遍历开始:先来看一下二叉树长什么样子:这是百度来的一张二叉树图,我们可以看到, 这棵二叉树一原创 2017-03-06 18:26:23 · 37409 阅读 · 0 评论 -
L2-011. 玩转二叉树
PAT乙级的一道题目,题目描述:给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间原创 2017-03-07 17:41:10 · 3680 阅读 · 3 评论 -
L2-006. 树的遍历
PAT 乙级的一道题目,题目描述:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例: 7 2 3 1 5 7 6原创 2017-03-07 19:08:46 · 747 阅读 · 0 评论 -
堆
我们在很多情况下都听到“堆”这个计算机术语,那么“堆”到底是什么呢?在数据结构中,堆是一种数据结构,具体一点,最常用的堆就是二叉堆, 二叉堆就是一棵完全二叉树(以下简称堆),我们可以利用这种数据结构来完成一些任务,典型的例子:堆排序就是利用堆来实现的一种高效的排序方式。接下来我们先看一下什么是完全二叉树:若设二叉树的深度为 h ,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第原创 2017-03-07 23:56:35 · 688 阅读 · 0 评论 -
二叉树的重建
在http://blog.csdn.net/hacker_zhidian/article/details/60586445这篇文章中我们看了一下二叉树的四种遍历方式,接下来我们看一下关于二叉树的重建问题,什么叫二叉树的重建呢?比方说给你一棵二叉树的前序遍历顺序和中序遍历顺序,要求你求出这颗二叉树的后序遍历顺序。来看一下个具体的例题数据,给定一个二叉树的信息:二叉树节点数: 5 前序遍历顺序:1 2原创 2017-03-07 17:20:43 · 1834 阅读 · 0 评论