随笔分类 - 二叉树
二叉树
摘要:## [ . 加分二叉树](https://www.acwing.com/problem/content/description/481/) ### 一、题目描述 设一个 个节点的二叉树 的 **中序遍历** 为,其中数字 $
阅读全文
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; //2^7是极大值,就是 128是队伍的最大值,完全二叉树的最底层是128,上面肯定是127个,加在一起是255个,声明一个大于255的数字N可以保存的下 const int N = 260; i
阅读全文
摘要:题目传送门 一、绘制二叉树 1、宽度分析 (含指定m值情况下的最大宽度,与极限值情况下最大宽度) o / \ o o m = 2 >最长宽度(在最后面一个o后面再加一个空格,算入本轮的宽度) o / \ / \ o o / \ / \ o o o o m = 3 >最长宽度$=1
阅读全文
摘要:题目传送门 一、理解与感悟 1、树结点需要由父到子,有时也需要由子到父,所以结构体需要修改如下: //树的结构体+存储数组 struct Node { int id; // 当前结点ID int father; // 爸爸 int left; // 左结点ID int right; // 右结点ID
阅读全文
摘要:题目传送门 一、总结与感悟 1、二叉树遍历的代码模板 const int N = 1e6 + 10; //树的结构体+存储数组 //此处:为二叉树的标准创建、遍历模板,可用于其它试题! struct Node { int id; // 当前结点ID int left; // 左结点ID int ri
阅读全文
摘要:题目传送门 一、已知后序+中序,求前序 https://www.cnblogs.com/littlehb/p/15088998.html 二、已知前序+中序,求后序 https://www.cnblogs.com/littlehb/p/15088448.html 三、已知前序+后序,求中序个数 只有
阅读全文
摘要:题目传送门 一、二叉树+bfs解法 #include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; const int N = 210; bool st[N]; //是不是走过了 int n, ans = 0x3f3
阅读全文
摘要:题目传送门 一、数组+lower_bound+upper_bound模拟 #include <bits/stdc++.h> using namespace std; const int N = 10010; int a[N]; int q, cmd, number, cnt; long long p
阅读全文
摘要:二叉树的三种遍历方式 一、二叉树的前序、中序、后序遍历 二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。 规则: 前中后序是对根而言的,前就是先说根是啥,中就是中间说根是啥,后是最后说根是啥。 除根以外,其它同级节点的遍历顺序是先左后右。 举栗子:
阅读全文
摘要:题目传送门 一、已知后序+中序,求前序 求解步骤: (1)后序遍历的字符串,尾字母是子树的根。 (2)在中序遍历字符串中找到“步骤1查找到的尾字母”,它的左边就是左子树,右边就是右子树,可以计算获得左子树长度。 (3)在后序遍历字符串中根据左子树长度,获取到左子树子串(\(l1
阅读全文
摘要:题目传送门 一、已知前序+中序,求后序 (1)、二叉树的遍历,就是一个深度优先搜索的过程: 前序 const int N = 1e6 + 10; //树的结构体+存储数组 struct Node { int id; // 当前结点ID int left; // 左结点ID int right;//
阅读全文
摘要:题目传送门 C++代码 #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; //树的结构体+存储数组 struct Node { int left; // 左结点ID int right;// 右结点ID } t
阅读全文