72_leetcode_Construct Binary Tree from Preorder and Inorder Traversal
2015-10-25 17:32
417 查看
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
1:注意特殊情况。2:递归的情况;3:递归结束情况;4:首先获得根节点,之后把两个数组分别分成两部分,递归分别得出左子树和右子树。
Note:
You may assume that duplicates do not exist in the tree.
1:注意特殊情况。2:递归的情况;3:递归结束情况;4:首先获得根节点,之后把两个数组分别分成两部分,递归分别得出左子树和右子树。
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { if(preorder.size() == 0 || inorder.size() == 0 || preorder.size() != inorder.size()) { return NULL; } int size = (int)preorder.size(); return buildTreeCore(preorder, 0, inorder, 0, size); } TreeNode* buildTreeCore(vector<int> &preorder, int preStart, vector<int> &inorder, int preIn, int length) { if(length == 1) { if(preorder[preStart] != inorder[preIn]) { return NULL; } } int rootValue = preorder[preStart]; TreeNode *root = new TreeNode(rootValue); int i = 0; for(; i < length; i++) { if(inorder[preIn + i] == rootValue) { break; } } if(i == length) { return NULL; } if(i > 0) { root->left = buildTreeCore(preorder, preStart + 1, inorder, preIn, i); } if(i < length - 1) { root->right = buildTreeCore(preorder, preStart + i + 1, inorder, preIn + i + 1, length - 1 - i); } return root; }
相关文章推荐
- JAVA学习课第二十八届(多线程(七))- 停止-threaded多-threaded面试题
- web前端之HTML中的div
- Ubuntu软件安装卸载查看方法
- bean的生命周期
- Ubuntu安装JDK1.6
- 【PSR规范专题(1)】PSR-0+namespace+spl_autoload_register实现框架模型
- vmware ubuntu 切换终端命令行
- c++入行的程序员 北漂记 回忆
- Dreamweaver代码自动缩进对齐
- Mac osx 使用Python 安装MySQLdb模块
- 怎样快速进入Windows 10的文件管理系统
- web前端之HTML中的列表
- ios:如何将自己编写的软件放到真正的iPhone上运行(转)
- Scanner和BufferedReader的区别
- php注释规范
- 【PHPsocket编程专题(实战篇②)】兼容 Curl/Socket/Stream 的 HTTP 操作类[转]
- mysql 重置root密码
- iOS开发者计划(转)
- 纯CSS3图片翻转效果详解
- 戏剧减压 小众不小