摘要:
水~。 \(N \le 10\),结点下标的范围为$0 \sim 9$,所以直接和字符'0'相减即可。 const int N=35; PII tree[N]; int fa[N]; vector<int> layer,in; int n; void bfs(int root) { queue<in 阅读全文
posted @ 2021-02-25 21:12
Dazzling!
阅读(43)
评论(0)
推荐(0)
摘要:
参考$\color$代码,虽然自己思路大体上相同,但离代码实现还差一步,菜的安详>_<。 思路 题意其实就是下面的伪代码: void inorder(int root) { if(root == 0) return; push(root); inorder(tree[root].lchild); p 阅读全文
posted @ 2021-02-25 19:55
Dazzling!
阅读(78)
评论(0)
推荐(0)
摘要:
在二叉搜索树中,中序遍历的结果总是所有元素的升序排列(如上表中标红的一行所示);换句话说,中序遍历结果是不能帮助我们判断两个序列是否对应同一棵二叉搜索树的。这是其他几种遍历无法做到的。 而层序、先序、后序遍历都可以用来判断两个给定序列是否为同一棵二叉搜索树。 const int N=110; str 阅读全文
posted @ 2021-02-25 19:11
Dazzling!
阅读(72)
评论(0)
推荐(0)
摘要:
二叉排序树裸题。 牛客网补充说明:输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。 所以建立的二叉排序树中不包含重复元素。 const int N=110; int a[N]; PII tree[N]; int n; void insert(int &root,int idx) { 阅读全文
posted @ 2021-02-25 18:58
Dazzling!
阅读(115)
评论(0)
推荐(0)
摘要:
题意 给定一个整数序列,判断它是否可能是某个二叉搜索树或其镜像进行前序遍历的结果。对镜像树的先序遍历只需要在原树的先序遍历时交换左右子树的访问顺序即可。 注意点 结点中存放的是下标。 使用vector来存放初始序列、先序序列、镜像树先序序列,可以方便相互之间的比较。 由于结点的值会有重复,不能采用m 阅读全文
posted @ 2021-02-25 16:29
Dazzling!
阅读(35)
评论(0)
推荐(0)
摘要:
并查集裸题,注意$0$的特判,此时没有朋友关系,房间里只能留下一个人,其余$10000000-1$都要移出去。 const int N=1e7+10; int p[N]; int cnt[N]; int n,m; int find(int x) { if(x != p[x]) p[x]=find(p 阅读全文
posted @ 2021-02-25 13:11
Dazzling!
阅读(40)
评论(0)
推荐(0)
摘要:
题目关键就是要保证两个点 这是一张无环图 这张图是一张连通图 这就变成一个并查集的模板题,每次加进来一条边只要判断两个顶点的根节点是否相同,如果相同说明遇到了环。然后判断这张图是连通图块数是否为1。 const int N=1010; int p[N]; int n,m; int find(int 阅读全文
posted @ 2021-02-25 12:59
Dazzling!
阅读(134)
评论(0)
推荐(0)
摘要:
读懂题后发现,这不就三维$BFS$裸题吗,$30$分的裸题可还行。 输入数据时是按多个二维矩阵的方式读入的,因此3层for循环中的第一层需要遍历矩阵编号,第二、三层才是单个矩阵的数据读入。 const int N=1300,M=130; struct Node { int x,y,z; }; boo 阅读全文
posted @ 2021-02-25 10:33
Dazzling!
阅读(43)
评论(0)
推荐(0)

浙公网安备 33010602011771号