1099. Build A Binary Search Tree (30)
来源:互联网 发布:nginx 二级域名 转发 编辑:程序博客网 时间:2024/05/18 02:49
1、先递归计算每一个节点两边孩子的数量
2、然后对给的序列排序
3、然后根据两边孩子的数量就可以确定这个节点在序列中的位置,然后递归的确定就好了
4、最后层序遍历一遍
#include <iostream>#include <algorithm>#include <queue>#define SIZE 100using namespace std;int treetable[SIZE],treenum[SIZE];struct tree{ int left,right,leftnum,rightnum;} node[SIZE];queue<int>q;int CountChild(int s){ if(node[s].left == -1&&node[s].right == -1) node[s].leftnum = node[s].rightnum = 0; else if(node[s].left == -1){ node[s].leftnum = 0; node[s].rightnum = CountChild(node[s].right) + 1; } else if(node[s].right == -1){ node[s].rightnum = 0; node[s].leftnum = CountChild(node[s].left) + 1; } else { node[s].leftnum = CountChild(node[s].left) + 1; node[s].rightnum = CountChild(node[s].right) + 1; } return node[s].leftnum + node[s].rightnum;}void BuildTree(int s,int begin){ treetable[s] = treenum[begin + node[s].leftnum]; if(node[s].left!=-1) BuildTree(node[s].left,begin); if(node[s].right != -1) BuildTree(node[s].right,begin + node[s].leftnum + 1);}int main() { freopen("/Users/andyyang/ClionProjects/helloworld/1.in","r",stdin); int numofnode; scanf("%d",&numofnode); for(int i = 0;i<numofnode;i++) { scanf("%d%d",&node[i].left,&node[i].right); node[i].leftnum = node[i].rightnum = 0; } for(int i = 0;i<numofnode;i++) scanf("%d",&treenum[i]); sort(treenum,treenum+numofnode); CountChild(0); BuildTree(0,0); int qtable[SIZE],count = 0,idx; q.push(0); while(q.size()){ idx = q.front(); q.pop(); qtable[count++] = treetable[idx]; if(node[idx].left!=-1) q.push(node[idx].left); if(node[idx].right != -1) q.push(node[idx].right); } for(int i = 0;i<numofnode;i++) { if(i == numofnode - 1) printf("%d\n",qtable[i]); else printf("%d ",qtable[i]); } return 0;}
0 0
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 1099. Build A Binary Search Tree (30)
- 母亲节(Mother's Day),是一个感谢母亲的节日。
- 文档、集合与数据库
- 线性表-链表(四)
- 欢迎使用CSDN-markdown编辑器
- Django是如何处理URLconf的?
- 1099. Build A Binary Search Tree (30)
- Android——AdT模拟新浪微博随便看看看看
- hdu1712---ACboy needs your help(dp,分组背包)
- 计算几何-经典算法-凸包
- ubuntu下vim文本编辑器的使用
- 关于Linux静态库和动态库的分析
- Python中的URL模式
- ubuntu 卸载当前版本的 Django
- axure7.0 账号登录交互制作