Lintcode前序遍历和中序遍历树构造二叉树
来源:互联网 发布:周杰伦婚礼音乐知乎 编辑:程序博客网 时间:2024/06/09 05:22
样例
给出中序遍历:[1,2,3]
和前序遍历:[2,1,3]
. 返回如下的树:
2 / \1
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ 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 int len1 = preorder.size(); int len2 = inorder.size(); if (len1 <= 0 || len2 <= 0) { return nullptr; } return dp(preorder,inorder); } TreeNode *dp(vector<int> &porder, vector<int> &iorder) { int len1 = porder.size(); int len2 = iorder.size(); if (len1 <= 0 || len2 <= 0) { return nullptr; } TreeNode *root = new TreeNode(); root->val=porder[0]; if (len1 ==1 || len2 ==1) { return root; } int r=0; for (int i = 0; i < len1 ; ++i) { if (iorder[i] == root->val) { r = i; break; } } vector<int> linorder; vector<int> rinorder; vector<int> rporder; vector<int> lporder; for (int i = 0; i < r ; ++i) { linorder.push_back(iorder[i]); } for (int i = r+1; i < len2 ; ++i) { rinorder.push_back(iorder[i]); } for (int i = 1; i <= r ; ++i) { lporder.push_back(porder[i]); } for (int i = r+1; i <= len1; ++i) { rporder.push_back(porder[i]); } root->left =dp(lporder,linorder); root->right =dp(rporder,rinorder); return root; }};
0 0
- Lintcode前序遍历和中序遍历树构造二叉树
- lintcode- 前序遍历和中序遍历树构造二叉树-73
- LintCode-剑指Offer-(73)前序遍历和中序遍历树构造二叉树
- lintcode,前序遍历和中序遍历树构造二叉树
- LintCode 73- 前序遍历和中序遍历树构造二叉树
- LintCode 73 前序遍历和中序遍历树构造二叉树
- 前序遍历和中序遍历树构造二叉树-LintCode
- [LintCode]73.前序遍历和中序遍历树构造二叉树
- LintCode 前序遍历和中序遍历树构造二叉树
- LINTCODE——前序遍历和中序遍历树构造二叉树
- lintcode---前序遍历和中序遍历树构造二叉树
- 前序遍历和中序遍历构造二叉树[lintcode]
- [LintCode] 前序遍历和中序遍历树构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal
- 根据前序和中序遍历构造二叉树
- 根据前序和中序遍历构造二叉树
- 前序和中序遍历构造二叉树
- lintcode-中序遍历和后序遍历树构造二叉树-72
- LintCode(72)中序遍历和后序遍历树构造二叉树
- 多线程01-NSThread 基本了解和一些总结1
- 看代码
- adb shell screenrecord /sdcard/myscreenrecord.mp4 录视频
- Qt 5.5 beta - Qt Quick Extras - CircularGauge
- keil CMSIS PACK制作中文 手册
- Lintcode前序遍历和中序遍历树构造二叉树
- fastjson 使用方法
- 职场
- 伪文艺装逼码农觉得不错的歌
- hdu 1078 FatMouse and Cheese
- nginx连接memcached
- 关于 OGG "Loading data from file to Replicat"同步含有lob字段表的部分记录的关键参数
- MySQL基本语句总结
- Atitit.ui控件---下拉菜单选择控件的实现select html