重建二叉树
来源:互联网 发布:大数据的定义是什么 编辑:程序博客网 时间:2024/06/06 02:18
- 时间限制:1秒空间限制:32768K
- 通过比例:19.51%
- 最佳记录:0ms|85(来自 牛客688826号)
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。(测试用例中,"树"的输出形式类似于树的层次遍历,没有节点的用#来代替)
解答思路:二叉树的操作,一定要记得使用递归的思路
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { if(pre.empty()||in.empty()) return NULL; TreeNode* root=new TreeNode(pre[0]); vector<int> left_child_pre; vector<int> left_child_in; vector<int> right_child_pre; vector<int> right_child_in; int root_sub=0; for(int i=0;i<in.size();++i){ if(in[i]==pre[0]){ root_sub=i; break; } } for(int i=0;i<root_sub;++i){ left_child_pre.push_back(pre[i+1]); left_child_in.push_back(in[i]); } for(int i=root_sub+1;i<pre.size();++i){ right_child_pre.push_back(pre[i]); right_child_in.push_back(in[i]); } root->left=reConstructBinaryTree(left_child_pre,left_child_in); root->right=reConstructBinaryTree(right_child_pre,right_child_in); return root; }};
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- Remove Element -LeetCode
- 使用开源库zlib压缩和解压文件
- 可记住用户名密码的登陆界面(基于对SharedPreferences的应用)
- android平台手电筒开发源代码
- 二叉树
- 重建二叉树
- Android设置透明、半透明等效果
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记30 ScrollView Demo实战
- week14_2.cpp
- ECMA-262,第 5 版。最新 JavaScript 规范 了解 ECMAScript 规范的历史,查看它的众多重要新特性和新概念。
- [转]IOS如何访问通讯录
- NSString常用方法
- 屏幕各尺寸的代码方式获取
- 企业安全之WiFi篇