1099. Build A Binary Search Tree
来源:互联网 发布:淘宝定制的可强行退吗 编辑:程序博客网 时间:2024/06/06 05:44
构造树的结构,记录每个节点左右的孩子节点数,从而判断其数值的大小位置。
#include <iostream>#include <algorithm>#include <queue>#include <stdio.h>using namespace std;struct Info{ int left; int leftNodes; int right; int rightNodes; int total; int value;};int n;int *num;Info *tree;void build(int root, int start){ if(root == -1) return; tree[root].value = num[tree[root].leftNodes + start]; build(tree[root].left, start); build(tree[root].right, 1+tree[root].leftNodes + start);}int calcunums(int root){ if(root == -1) return 0; if(tree[root].left == -1) tree[root].leftNodes = 0; else tree[root].leftNodes = calcunums(tree[root].left)+1; if(tree[root].right == -1) tree[root].rightNodes = 0; else tree[root].rightNodes = calcunums(tree[root].right)+1; tree[root].total = tree[root].leftNodes + tree[root].rightNodes; return tree[root].total;}int main(){ scanf("%d", &n); num = new int[n]; tree = new Info[n]; for(int i = 0; i < n; i++) scanf("%d %d", &(tree[i].left), &(tree[i].right)); for(int i = 0; i < n; i++) scanf("%d", num+i); sort(num, num+n); calcunums(0); build(0, 0); bool first = true; queue<Info> output; Info info; output.push(tree[0]); while(!output.empty()) { info = output.front(); output.pop(); if(first) cout << info.value; else cout << " " << info.value; first = false; if(info.left != -1) output.push(tree[info.left]); if(info.right != -1) output.push(tree[info.right]); } return 0;}
0 0
- PAT 1099. Build A Binary Search Tree
- 1099.Build A Binary Search Tree
- 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
- 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)
- HDU 3480 (斜率优化)
- 【ISTQB】ISTQB介绍说明
- OpenGL深入探索——Assimp加载模型并绑定VAO
- 【那些年遇到过的面试题】 rpm包
- Python中的按位运算符
- 1099. Build A Binary Search Tree
- opencv cvCaptureFromFile读取视频总返回NULL
- ios 音频处理开发(一)iOS AudioSession中的category配置问题
- UGUI与NGUI的区别与优缺点
- 3Sum Smaller
- Java定时任务3:Jcrontab的使用
- 水晶报表函数应用
- nextSibling
- c#winform自定义listview,解决listview闪缩问题,添加listview单元格单击事件。