题解 | #从前序和中序遍历构造二叉树#和上一题差不多

从前序和中序遍历构造二叉树

https://www.nowcoder.com/practice/0ee054a8767c4a6c96ddab65e08688f4

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 * };
 */

class Solution {
  public:
    /**
     *
     * @param preorder int整型vector
     * @param inorder int整型vector
     * @return TreeNode类
     */
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        if (preorder.size() == 0) return nullptr;
        int rootvalue = preorder[0];
        TreeNode* root = new TreeNode(rootvalue);

        int temp;
        for (temp = 0; temp < inorder.size(); temp++) {
            if (inorder[temp] == rootvalue)
                break;
        }
        vector<int> leftinorder(inorder.begin(), inorder.begin() + temp);
        vector<int> rightinorder(inorder.begin() + temp + 1, inorder.end());

        vector<int> leftpreorder(preorder.begin() + 1,preorder.begin() + 1 + leftinorder.size());
        vector<int> rightpreorder(preorder.begin() + 1 + leftinorder.size(),preorder.end());
        root->left = buildTree(leftpreorder, leftinorder);
        root->right = buildTree(rightpreorder, rightinorder);
        return root;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务