随笔分类 - 9.2二叉树的遍历
摘要:题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805353470869504 题目大意: 给出一棵树的结点个数n,以及它的前序遍历和后序遍历,输出它的中序遍历,如果中序遍历不唯一就输出No,且输出其中一个中序即可,如
阅读全文
摘要:题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805359372255232 算法思想:采用层次遍历,将所有结点(包括空结点)入队。当遇到空结点时,查看其后是否有非空结点。若有,则二叉树不是完全二叉树。 1 #inc
阅读全文
摘要:题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805355987451904 大致题意就是给出一个序列,构造一棵二叉查找树,输出最大深度和次最大深度的结点个数之和。 方法一,BFS 1 #include<iostre
阅读全文
摘要:大致题意就是给出一棵树的后序、中序遍历序列,然后建一棵树,,以蛇皮走位(奇层逆序,偶层顺序)输出其层序遍历序列。 1 #include<iostream> 2 #include<vector> 3 #include<queue> 4 #include<map> 5 using namespace s
阅读全文
摘要:题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805347921805312 那天模拟考试做这道题时,直接把我心态搞崩了。如今再做这道题,感触颇深啊~ 借助中序遍历,除了根结点和叶子结点,遍历到其它结点时,在遍历
阅读全文
摘要:大致题意就是给出一个二叉树的先序、中序遍历序列,要求输出二叉树后序遍历的第一个元素。 1 #include<iostream> 2 using namespace std; 3 4 const int maxn = 50010; 5 int n,pre[maxn],in[maxn],flag = 1
阅读全文
摘要:大致题意就是给出一个二叉查找树BST的先序遍历序列,然后再给出任意一对结点,如果结点不合法,那么输出不合法信息;否则,找出其最近祖先结点。 注意点: 1,如果已知二叉查找树BST的先序(后序)遍历序列,可以对序列进行按从小到大排序,得到中序遍历序列,进一步由先序、中序遍历序列可以唯一构造出一棵二叉树
阅读全文
摘要:好难啊!!!自己做是一个错误,加两个超时,呜呜呜。。。 大致题意就是给出一棵树的先序、中序遍历序列,可以构造一棵树。然后给两个顶点,找出这两个结点的最近公共祖先。 思路分析: 1,什么是最近公共祖先?就是说给定 树中两个结点u,v,一定能找到一个且只能找到一个结点root,使得 情况一,root的左
阅读全文
摘要:大致题意就是给出一个完全二叉树的层次序列,按根右左的顺序,输出所有从根结点到叶子结点的路径。最后判断这个完全二叉树是大顶堆,或小顶堆,或非堆。 思路: 1,可以先序遍历(根左右)的方式,用二维动态数组vector 存储所有从根结点到叶子结点的路径,然后倒着输出这些路径。 2,可以根据堆的性质,判断完
阅读全文
摘要:大致题意就是给出一个包含N个整数的序列,构造出一个二叉查找树,并判断这个序列是否与该二叉查找树的先序序列或者镜像二叉查找树的先序序列一样,如果一样,就输出该二叉查找树的后序序列,否则输出NO。 1 #include<iostream> 2 #include<vector> 3 using names
阅读全文
摘要:大致题意就是给出一个静态二叉树,将其反转后输出层序遍历序列和中序遍历序列。 思路: 使用一维数组存放二叉树的结点,标记输入的孩子结点为已访问,最后可以通过遍历标记数组,找出未被访问的结点即为根结点。 实现反转二叉树的方法:访问完 当前根结点的左孩子和右孩子以后,交换其左、右孩子,后序遍历实现。 层序
阅读全文
摘要:这是一道二叉树遍历模板题。 大致题意就是给出 用栈模拟二叉树的中序遍历过程,推断出push的全部元素是先序序列,pop的全部元素是中序序列,最后 根据 先序+中序 = 二叉树,输出二叉树的后序序列。 注意点:如果使用 getline(cin,str),必须要考虑 元素值大于 10的情况,不然 最后一
阅读全文
摘要:先序+中序 = 二叉树。 pre[n]存放先序序列,in[n]存放中序序列。 一,递归边界:中序序列的左边界必须小于等于右边界。 二,递归: 1,取当前先序序列[preL,preR]的第一个元素pre[preL]作为根节点root, 2,在当前中序序列中找出根节点root的下标k,把当前中序序列划分
阅读全文
摘要:内心OS:我靠啊!!!我就是偷了一下懒!!!把先序遍历的代码COPY了两份,改成了中序和后序遍历。万万没想到啊!我忘了修改函数中递归函数的名字!!!找这个BUG花了我三个小时~~我哭啊~~,我还以为我的知识体系坍塌了呢?!!~ 总结,这是一道模板题,要先记住大体流程,然后反复练习。 输入格式: 第一
阅读全文
摘要:大致题意就是给出二叉树的后序序列和中序序列,要求重建二叉树,然后输出二叉树的层次遍历序列。 这是一道模板题,要先记住大体流程,然后反复练习。 模板一:后序+中序 = 二叉树。 模板二:层次遍历 即BFS。 1 #include<iostream> 2 #include<queue> 3 #inclu
阅读全文

浙公网安备 33010602011771号