重建二叉树

简介:

C++

复制代码
/**
 * 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.size() == 0) {
            return NULL;
        }
        TreeNode *root = new TreeNode(pre[0]);
        
        vector<int> l_in, r_in, l_pre, r_pre;
        bool flag = true;
        for (int i = 0; i < pre.size(); i++) {
            if (in[i] == pre[0]) {
                flag = false;
                continue;
            }
            if (flag == true) {
                l_pre.push_back(pre[i+1]);
                l_in.push_back(in[i]);
            } else {
                r_pre.push_back(pre[i]);
                r_in.push_back(in[i]);;
            }
        }
        
        root->left = reConstructBinaryTree(l_pre, l_in);
        root->right = reConstructBinaryTree(r_pre, r_in);
        return root;
    }
};
复制代码

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5112653.html,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 C++ Python
leetcode-429:N 叉树的层序遍历
leetcode-429:N 叉树的层序遍历
31 0
|
6月前
leetcode-590:N 叉树的后序遍历
leetcode-590:N 叉树的后序遍历
50 0
|
6月前
|
C++
【剑指offer】-重建二叉树-04/67
【剑指offer】-重建二叉树-04/67
剑指offer-6.重建二叉树
剑指offer-6.重建二叉树
26 0
LeetCode——二叉树的非递归遍历
LeetCode——二叉树的非递归遍历
|
Perl
剑指offer 06. 重建二叉树
剑指offer 06. 重建二叉树
49 0
leetcode236—二叉树的最近公共祖先(递归/深搜/理解)
leetcode236—二叉树的最近公共祖先(递归/深搜/理解)
重建二叉树(剑指offer 07)
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
100 0
重建二叉树(剑指offer 07)
leetcode429 N叉树的层序遍历
leetcode429 N叉树的层序遍历
86 0
leetcode429 N叉树的层序遍历