1099. Build A Binary Search Tree (30)
来源:互联网 发布:中国历年gdp数据和排名 编辑:程序博客网 时间:2024/05/07 19:30
1.这道题目难度不大,主要思想如下:
1)先构建二叉树(此时尚未填值)
2)输出二叉树的中序遍历地址
3)对数组进行排序
4)把数组的数输入到中序遍历地址相应的节点值中
AC代码:
//#include<string>//#include <iomanip>#include<vector>#include <algorithm>//#include<stack>#include<set>#include<queue>#include<map>//#include<unordered_set>#include<unordered_map>//#include <sstream>//#include "func.h"//#include <list>#include<stdio.h>#include<iostream>#include<string>#include<memory.h>#include<limits.h>using namespace std;struct TreeNode{int val;TreeNode*left, *right;TreeNode(int x) :val(x), left(NULL), right(NULL){};TreeNode() :val(-1), left(NULL), right(NULL){};};void inOrder(TreeNode*root,vector<TreeNode*>&in){if (root != NULL){inOrder(root->left, in);in.push_back(root);inOrder(root->right, in);}}int main(void){int n;cin >> n;if (n == 0) return 0;TreeNode *tree = new TreeNode[n];//建立二叉树for (int i = 0; i < n; i++){int a, b;scanf("%d %d", &a, &b);if (a != -1)tree[i].left = &tree[a];if (b != -1)tree[i].right = &tree[b];}//读取数组vector<int> num(n, 0);for (int i = 0; i < n; i++){scanf("%d", &num[i]);}//数组排序sort(num.begin(), num.end());//建立中序遍历数组vector<TreeNode*> treeAddress(0);inOrder(&tree[0], treeAddress);for (int i = 0; i < n; i++){treeAddress[i]->val = num[i];}//进行层序遍历queue<TreeNode*> q;int count1 = 0;int count2 = 0;if (num.size() != 0){q.push(&tree[0]);count1++;}vector<int> outPut(0);while (!q.empty()){for (int i = 0; i < count1; i++){TreeNode* tmp = q.front(); q.pop();outPut.push_back(tmp->val);if (tmp->left != NULL){q.push(tmp->left);count2++;}if (tmp->right != NULL){q.push(tmp->right);count2++;}}count1 = count2;count2 = 0;}//输出结果for (int i = 0; i < outPut.size(); i++){cout << outPut[i];if (i != outPut.size() - 1)cout << " ";}cout << endl;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)
- 【拔苗计划】linux学习笔记——netstat命令学习
- 各种编程语言的深度学习库整理大全
- JSON需要的jar包和和String类型转JSON
- 利用firebug调试控件样式
- 倒油题目(Java源代码)
- 1099. Build A Binary Search Tree (30)
- VC6LineNumberAddin.dll 在win7x64下的注册问题
- Android实现自定义的相机
- iOS开发-3DTouch开发
- 长期利率中枢下行 大类资产配置倾向高评级长久期固收产品
- 编写你的第一个PHP脚本:反馈表单脚本
- String,StringBuffer,StringBuilder效率与内存占用比较
- Broadcast的基本应用
- 命令行参数解析