二叉树
KLFTESPACE
这个作者很懒,什么都没留下…
展开
-
1127 ZigZagging on a Tree (30分)
1.后序+中序 确定层次遍历 2.用的是中序区间和后序区间来进行遍历(也可以用Tree Traversals (25分)中后序确定根结点+中序区间来做,因为后序区间也就可以判断根结点) 3.层次遍历看样例是第一行逆序,第二行正序,,以此类推 所以用vector来存储每行的节点 在判断是奇数层还是偶数层 #include<iostream> #include<vecto...原创 2020-02-24 19:10:36 · 195 阅读 · 0 评论 -
1123 Is It a Complete AVL Tree (30分)
1.注意左旋右旋时,最后形成的树形式 2.层次遍历可用前序遍历存储实现,也可以用队列实现。 3.左旋即将根节点的右孩子为新的根结点,然后原root为他孩子节点的左节点,原来孩子节点的左孩子变为原root节点的右边孩子 右旋即将根节点的左孩子为新的根结点,然后原root为他孩子节点的右节点,原来孩子节点的右孩子变为原root节点的左孩子 图示理解 #include<iostream...原创 2020-02-23 23:21:08 · 208 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30分)
前序遍历+后序遍历 确定中序遍历(不一定唯一) 用前序遍历的下一个根结点在后续遍历中查找所在位置确定子树节点个数,两个节点之间的节点数即为子树节点数,然后子树根结点是子树前序遍历起始位置。 #include<bits/stdc++.h> using namespace std; const int maxn = 35; int pre[maxn], post[maxn]; bo...原创 2020-02-23 19:26:43 · 238 阅读 · 0 评论 -
1115 Counting Nodes in a BST (30分)
1.建造树 2.在建造的时候记录所在层的节点数 3.记录所在最深层 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 1000+5; struct Node { No...原创 2020-02-22 22:06:15 · 138 阅读 · 0 评论 -
1102 Invert a Binary Tree (25分)
//转置二叉树仅需节点的左右子树互换 层次遍历+中序遍历 #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; const int N =10+5; struct Node{ int l, ...原创 2020-02-22 14:17:19 · 115 阅读 · 0 评论 -
1099 Build A Binary Search Tree (30分)
1.刚开始想的是构造树的时候,顺便存储每层的值,但是 有两个例子段错误 2.之后就只好按构造的树来进行层次遍历 3.题目理解错了,以为没告诉你两个节点的父节点,所以是一直递归,直到不能递归来构造树。 #include<iostream> #include<cstdio> #include<cstring> #include<queue...原创 2020-02-21 18:24:04 · 195 阅读 · 0 评论 -
1086 Tree Traversals Again (25分)
push的结果符合先序遍历的结果 即根左右(顺序从小到大) pop的结果符合中序遍历(左根右) 1.有两种做法 一,在建树的时候,直接push进根节点即可(即并不需要真正建造树,在左右子树递归完成后push进的就是符合左右根的后序遍历得结果) 二,真正意义上的构造一棵树,然后后序遍历这个树 2.在构造树的时候注意每个节点都需要new Node,刚开始我没注意,导致不会继续进行下去...原创 2020-02-20 17:17:11 · 162 阅读 · 0 评论 -
1064 Complete Binary Search Tree (30分)
完全二叉树中序遍历的结果是顺序的,所以只需要中序遍历,按顺序放置即可 #include <iostream> #include <algorithm> using namespace std; const int N = 2000+5; int Level[N]; int len=0; void lev(int a[],int x,int n) { if...原创 2020-02-18 17:45:48 · 119 阅读 · 0 评论 -
1043 Is It a Binary Search Tree (25分)
1.构造二叉树,注意& 2.mirror即先右后左 #include<iostream> #include<cstring> #include<vector> #include<map> #include<cstdio> #include<algorithm> using namespace std; str...原创 2020-02-03 16:34:01 · 160 阅读 · 0 评论 -
1020 Tree Traversals (25分)
1.层次遍历 2.不一定是完全二叉树,所以level存储后输出要注意 3.由于不一定是完全二叉树,所以数组大小需要给够 不然会段错误 或者答案错误 除此之外 在先序遍历时存储,根结点需要注意找对。 #include<iostream> using namespace std; const int N = 1000000+5; int in[N], po[N];...原创 2020-01-26 21:40:32 · 189 阅读 · 0 评论 -
BST POJ - 2309
#include<iostream> using namespace std; typedef long long ll; /* ll lowbit(int x) { return x&(x^(x-1)); } */ /* * 取出x的最低位1 <=> 把k的二进制的高位1全部清空,只留下最低位的1求2^p。 * (p 为 x 的二进制表示...原创 2018-12-06 22:43:25 · 165 阅读 · 0 评论