
树
文章平均质量分 77
cillyb
这个作者很懒,什么都没留下…
展开
-
二叉树前序,中序,后序求法
二叉树的前序,中序,后序序列是根据根节点的访问顺序定义的。 即: 前序序列:根节点 -> 左子树 -> 右子树 中序序列:左子树 -> 根节点 -> 右子树 后序序列:左子树 -> 右子树 -> 根节点 给出中序序列和另外一个序列,就可以求出第三个序列。 例题:POJ - 2255-Tree Recovery(http://poj.org/problem?id=2255)原创 2016-05-29 17:11:57 · 1075 阅读 · 0 评论 -
PAT 1115. Counting Nodes in a BST (30)(二叉搜索树的插入)
题意:给你一堆数,问按序插入一颗空的BST后,最后两层的节点个数的和是多少。思路:模拟二叉搜索树的插入,lch和rch分别记录左右孩子动态开点,另外开个val数组记录每个结点的值。代码:#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include&...原创 2018-03-12 20:11:12 · 328 阅读 · 0 评论 -
PAT 1110. Complete Binary Tree (25)(判断完全二叉树)
题意:给你n个节点和每个节点的左右孩子的一棵树,问你是不是一颗完全二叉树。思路:首先要明白怎样是一颗完全二叉树,完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。解题思路:先找到树的根节点,然后用类似广搜的方法,确保前一层都放满后再去找下一层。具体做法是用一个队列存放某一层的节点,用cnt表示当前已经遍历过节点的数量,一旦cnt==n(树的节点总...原创 2018-03-12 19:06:52 · 327 阅读 · 0 评论 -
PAT 1135. Is It A Red-Black Tree (30)(判断红黑树)
题意:给你一棵树的先序遍历,问你是不是一颗红黑树。 思路:红黑树的定义: 1、 每个结点的颜色只能是红色或黑色。 2、 根结点是黑色的。 3、 每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点n的只有一个左孩子,那么n的右孩子是一个黑哨兵; 如果结点n只有一个右孩子,那么n的左孩子是一个黑哨兵。 4、 如果一个结点是红的,则它的两个儿子都是黑的。也就是说在一条路原创 2018-03-16 14:46:22 · 569 阅读 · 0 评论 -
PAT 1130. Infix Expression (25)(中缀表达式)
题意:给你一颗中缀表达式的树,让你求出他的表达式。 思路:中序遍历即可,注意加括号,如果孩子是单个节点就不需要加括号了。 代码: #include using namespace std; const int maxn = 105; int lch[maxn], rch[maxn], n, root; char val[maxn][maxn]; bool book[maxn];原创 2018-03-15 19:07:24 · 321 阅读 · 0 评论 -
PAT 1102. Invert a Binary Tree (25)
题意:给你一个n(n<=10), 表示有一颗n个节点的数,现在给你n行,第i行表示第i个节点的左右孩子,让你输出该树反转后的层序遍历和中序遍历。思路:用个lch和rch分别记录每个点的左右孩子,给出的关系中肯定有一个节点不会出现,那个节点就是根节点。Sample Input:8 1 - - - 0 - 2 7 - - - - 5 - 4 6 Sample Output:3 7 2 6 4 0...原创 2018-03-07 20:32:25 · 225 阅读 · 0 评论 -
BZOJ 4756 Promotion Counting(线段树合并 || dfs)
题意:给你一棵n个节点的树,根为1,问你每个节点,它的子树中有几个节点比它大。 思路: 有一个简单的方法是可以遍历一下这棵树,树状数组维护,对于每个点的答案为 子树节点个数-(遍历它后比它小的数的个数-遍历它前比它小的数的个数)。遍历完它的子树节点后把它插入树状数组。 还有一个方法是对于每个节点建立一颗权值线段树,然后自底向上合并,每次合并后就可以直接查找比它大的数的个数,因原创 2017-08-12 00:46:14 · 514 阅读 · 0 评论 -
之江学院2017ACM 校赛 Problem M: qwb与二叉树(记忆化搜索)
Description 某一天,qwb正在上数据结构课。老师在讲台上面讲着二叉树,qwb在下面发着呆。 突然qwb想到一个问题:对于一棵n个无编号节点,m个叶子的有根二叉树,有多少种形态呐?你能告诉他吗? Input 多组输入,处理到文件结束,大约有104组数据。 每一组输入一行,两个正整数n,m(0≤m≤n≤50),意义如题目所述。 Output 每一行输出原创 2017-06-03 16:58:26 · 699 阅读 · 0 评论 -
codevs 1029 遍历问题
题目描述 Description 我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树: 所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却原创 2017-04-18 14:55:49 · 460 阅读 · 0 评论 -
5-13 是否完全二叉搜索树 (30分)
5-13 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一原创 2017-03-24 23:55:54 · 1130 阅读 · 0 评论 -
以AVL树为例理解二叉树的旋转(Rotate)操作
转载自:点击打开链接 树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果. 树旋转通常应用于需要调整树的局部平衡性的场合. 树旋转包括两个不同的方式, 分别是左旋转和右旋转. 两种旋转呈镜像, 而且互为逆操作. 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保转载 2016-12-18 16:47:35 · 2981 阅读 · 0 评论 -
PAT 1053. Path of Equal Weight (30)
1053. Path of Equal Weight (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a non-empty tree with root R, an原创 2016-09-08 16:08:44 · 363 阅读 · 0 评论 -
PAT 1099. Build A Binary Search Tree (30)
1099. Build A Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Binary Search Tree (BST) is r原创 2016-09-06 17:47:19 · 462 阅读 · 0 评论 -
POJ - 2255 二叉树遍历
Tree Recovery Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7997 Accepted: 5079 Description Little Valentine liked playing with binary tree转载 2016-05-19 21:15:33 · 688 阅读 · 0 评论 -
二叉树的层次遍历
终于自己能够写出二叉树的前序, 中序, 后序和层次遍历了,还是有点开心的。才发现原来建树是那么简单,只要理解好递归就差不多了。 之前转过前中后序的遍历,现在就记下层次遍历吧。 用pat上的题当例子吧。 https://www.patest.cn/contests/gplt/L2-006 L2-006. 树的遍历 时间限制 400 ms 内存限制原创 2016-06-05 20:37:42 · 1818 阅读 · 0 评论 -
PAT 1119. Pre- and Post-order Traversals (30) (根据前序后序求中序)
题意:给你一棵树的前序和后序遍历,问你它的中序遍历是否唯一,并且给出任意一种中序遍历。 思路:判断中序遍历是否唯一,我们可以通过每个非叶子节点是否都是有两个孩子,如果只有一个孩子,那他的子树既可以是左子树又可以是又子树,所以就不唯一了。 那怎么判断是否有只有一个孩子的结点。 可以看看这个博客:点击打开链接 已知前序遍历和后序遍历序列,是无法确定一棵二叉树的,原因在于原创 2018-03-14 11:19:45 · 340 阅读 · 0 评论