二叉树
lcxdz
这个作者很懒,什么都没留下…
展开
-
1099 Build A Binary Search Tree (30 分) (中序序列 二叉树 层次遍历
添加链接描述可以发现从小到大排序是树的中序序列 先通过链表将树的形状回复,然后的中序填值,最后层次遍历#include<bits/stdc++.h>using namespace std;const int N=500;struct node { int data; int l,r;}t[N];int arr[N];int tot=0;void dfs(int u){ if(t[u].l!=0){ dfs(t[u].l); }原创 2022-03-02 21:42:43 · 352 阅读 · 0 评论 -
2021pat 春 7-3 Structure of Max-Heap (25 分) (堆插入 判断结点关系
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9;int arr[N];int n,m;void down(int u){ int t=u; if(u*2<=n&&arr[u]<arr[u*2]){ t=u*2; } if(u*2+1<=n&&arr[t]<arr[u*2+1]){原创 2022-03-01 20:05:01 · 111 阅读 · 0 评论 -
1167 Cartesian Tree (30 分)中序建堆 二叉树
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=40;int arr[N];typedef struct node { int data; node *l,*r;}*bitnode;node *build(int l,int r){ if(l==r){ node *root=new node (); root->data=arr[l];原创 2022-02-28 22:29:29 · 156 阅读 · 0 评论 -
2021pat秋 7-4 Sorted Cartesian Tree (30 分) 中序建堆 0/30
结点赋值要开辟空间找到中序序列的关键添加链接描述#include<bits/stdc++.h>using namespace std;const int N=40;typedef pair<int,int> pii;#define int long longpii arr[N];typedef struct node { pii data; node *l, *r;}*bitnode;bool cmp(pii a,pii b){ retu原创 2022-02-28 10:25:02 · 184 阅读 · 0 评论 -
1159 Structure of a Binary Tree (30 分)0/30(中序、后序遍历建树 同时记录树的信息 sscanf
添加链接描述中序、后序遍历建树 同时记录树的父亲,兄弟,高度,满二叉树,左右结点#include<bits/stdc++.h>using namespace std;const int N=40;int post[N],in[N];typedef struct node { int data,h; node *l,*r,*parent;}*treenode;bool full=1;map<int,node*>mp;string s;node *b原创 2022-02-27 19:51:05 · 536 阅读 · 0 评论 -
1155 Heap Paths (30 分) (堆 中右左遍历 dfs模板 0/30
添加链接描述判断堆 输出堆的中右左 递归#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int arr[N];vector<int> ans;int n;void dfs(int root){ if (root * 2 > n) { int ok = 1; cout << ans[0]; for (a原创 2022-02-26 15:16:05 · 88 阅读 · 0 评论 -
1151 LCA in a Binary Tree (30 分) (前序中序遍历 0/30
添加链接描述通过map记录下标 进行遍历,可以直接得到pre的根这样就不需要k++,在建树的过程中寻找如果下标都在根两边说明找到了最近的点,否则就往两边找#include<bits/stdc++.h>using namespace std;const int N=1e4+9;int in[N],pre[N];int n,q;int ok=0;unordered_map<int,int>pt;void lca(int inl,int inr,int root,int原创 2022-02-25 16:59:15 · 390 阅读 · 0 评论 -
1147 Heaps (30 分) (层次遍历一棵完全二叉树 判断堆 后序遍历
添加链接描述层次遍历和完全二叉树就不需要建树了,数组就是树~~#include<bits/stdc++.h>using namespace std;const int N=1e3+9;int arr[N];typedef struct node{ int data; node *l,*r;}bitnood,*bittree;int t,n;int ok=0;void dfs(int u){ if(u>n)return; dfs(u*2);原创 2022-02-23 22:36:04 · 167 阅读 · 0 评论 -
1143 Lowest Common Ancestor (30 分) (思维 坑 二叉搜索树 最近公共祖先
添加链接描述测试点二:当p既等于a又等于b的时候只输出一个 所以是else#include<bits/stdc++.h>using namespace std;const int N=1e4+9;int arr[N];map<int,int>mp;int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>arr[i];原创 2022-02-23 19:40:10 · 150 阅读 · 0 评论 -
1138 Postorder Traversal (25 分) (前序 中序 后序输出
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=5e4+9;int pre[N],in[N];typedef struct node{ int data; node *l,*r;}bitnode,*bittree;node *build(int prel,int prer,int inl,int inr){ node *root; root=new node ();原创 2022-02-22 20:53:02 · 92 阅读 · 0 评论 -
1135 Is It A Red-Black Tree (30 分) (判断一棵树是红黑树
添加链接描述#include <bits/stdc++.h>using namespace std;const int N = 50;typedef struct node{ int data; node *l, *r;} bitnode, *bitree;node *build(node *root, int x)//二叉搜索树要根据值判断{ if (root == NULL) { root = new node();原创 2022-02-22 19:02:56 · 84 阅读 · 0 评论 -
1130 Infix Expression (25 分) (中序遍历 二叉树 0/25
添加链接描述中序遍历 且带括号#include<bits/stdc++.h>using namespace std;const int N=30;struct node{ string data; int l,r; // bool operator<(const node &ch)const {}}t[N];int vis[N];int root=1;void dfs(int u){ if(u==-1)return; if原创 2022-02-22 10:05:49 · 357 阅读 · 0 评论 -
1127 ZigZagging on a Tree (30 分) (后序 中序 bfs 20/30
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=400;int in[N],post[N];typedef struct node { int data; node *l,*r;}bitnode,*bittree;node *build(int inl,int inr,int postl,int postr){ if(inr<inl)return NULL;//!! bi原创 2022-02-21 18:57:47 · 198 阅读 · 0 评论 -
1123 Is It a Complete AVL Tree (30 分) (avl树插入 与判断是不是完全二叉树 层次遍历 0/30
添加链接描述#include <bits/stdc++.h>using namespace std;typedef struct node{ int data; node *l, *r;} bitnode, *bitree;node *right_rotate(node *root){ bitnode *p = root->l; root->l = p->r; p->r = root; return p;}原创 2022-02-21 14:19:42 · 127 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30 分)(二叉树 后序 前序 中序输出 0/30
#include<bits/stdc++.h>using namespace std;const int N=40;int pre[N],post[N];typedef struct node { int data; node *l,*r;}bitnode,*bitree;int ok=1;vector<int> ans;void create(int prel,int prer,int postl,int postr){ if(prel==原创 2022-02-20 22:51:15 · 192 阅读 · 0 评论 -
1110 Complete Binary Tree (25 分) (二叉树 dfs 0/25
添加链接描述通过遍历二叉树得到最大节点 如果大于说明不是完全二叉树等于个数则是完全二叉树根节点是入度为0的点#include<bits/stdc++.h>using namespace std;const int N=30;struct node { int l,r;}t[N];int in[N];int mxh=0,last,tot=0;void dfs(int u,int h){ // cout<<u<<endl; if(原创 2022-02-07 23:50:01 · 82 阅读 · 0 评论