LINTCODE——前序遍历和中序遍历树构造二叉树
来源:互联网 发布:jquery.loading.js 编辑:程序博客网 时间:2024/06/09 10:53
LINTCODE——前序遍历和中序遍历树构造二叉树
思路:
第一步:根据前序遍历可以得到树的根节点(root);
第二步:在中序遍历中找到(root)的所在位置,将中序数组划分成左右两个数组,对应左子树(left_tree)和右子树(right_tree);
第三步:同样的划分前序数组;
最后:递归结果就好了。。。。
class Solution { /** *@param preorder : A list of integers that preorder traversal of a tree *@param inorder : A list of integers that inorder traversal of a tree *@return : Root of a tree */public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { // write your code here if(preorder.empty()) return NULL; if(preorder.size() == 1) return new TreeNode(preorder[0]); //找到中间点在中序排列的位置 int mid = 0; for(int i = 0 ; i < inorder.size() ; i++) { if(inorder[i] == preorder[0]) { mid = i; break; } } //拆分中序遍历 vector<int> left_inorder( inorder.begin() , inorder.begin()+mid); vector<int> right_inorder(inorder.begin()+mid+1 , inorder.end()); int L = left_inorder.size() ; //根据中序遍历的左边长度,拆分前序遍历; vector<int> left_preorder(preorder.begin()+1 ,preorder.begin()+L+1); vector<int> right_preorder(preorder.begin()+L+1 ,preorder.end()); //递归生产树 TreeNode *root = new TreeNode(inorder[mid]); root -> left = buildTree(left_preorder , left_inorder); root -> right = buildTree(right_preorder , right_inorder); return root; }};
阅读全文
0 0
- LINTCODE——前序遍历和中序遍历树构造二叉树
- Lintcode前序遍历和中序遍历树构造二叉树
- lintcode- 前序遍历和中序遍历树构造二叉树-73
- LintCode-剑指Offer-(73)前序遍历和中序遍历树构造二叉树
- lintcode,前序遍历和中序遍历树构造二叉树
- LintCode 73- 前序遍历和中序遍历树构造二叉树
- LintCode 73 前序遍历和中序遍历树构造二叉树
- 前序遍历和中序遍历树构造二叉树-LintCode
- [LintCode]73.前序遍历和中序遍历树构造二叉树
- LintCode 前序遍历和中序遍历树构造二叉树
- lintcode---前序遍历和中序遍历树构造二叉树
- 前序遍历和中序遍历构造二叉树[lintcode]
- [LintCode] 前序遍历和中序遍历树构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal
- 根据前序和中序遍历构造二叉树
- 根据前序和中序遍历构造二叉树
- 前序和中序遍历构造二叉树
- lintcode——二叉树的前序遍历
- 树—根据中序遍历和后序遍历(或者前序和中序)构造二叉树
- #2016京东实习生笔试之生日礼物
- 关于批量将彩色图转为灰度图
- CCF CSP 201503-4 网络延时 (求树的直径-树形DP)
- Android Api demo系列(23) (Graphics>Pictures)
- Python 文件数据批量录入数据库(MongoDB)
- LINTCODE——前序遍历和中序遍历树构造二叉树
- Java之——Map与JavaBean互相转化
- java方法调用原理——虚拟机中方法调用
- 三目运算符和if_else引发的血案
- Calico 的网络结构是什么?- 每天5分钟玩转 Docker 容器技术(68)
- 【前端笔试】JavaScript实现字符串全排列
- 嵌入式系统基础及知识及接口技术总结
- java web项目代码不报错但是项目左上角有个红叉
- Android多媒体--学习笔记1