Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal (Medium) (cpp)

来源:互联网 发布:强生研发 知乎 编辑:程序博客网 时间:2024/05/16 23:01

Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal (Medium) (cpp)

Tag: Array, Tree, Depth-first Search

Difficulty: Medium


/*105. Construct Binary Tree from Preorder and Inorder Traversal (Medium)Given preorder and inorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates do not exist in the tree.*//** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {        return BT(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size() - 1);    }    TreeNode* BT(vector<int>& preorder, int pl, int pr, vector<int>& inorder, int il, int ir) {        if (il > ir) {            return NULL;        }        int val = preorder[pl];        TreeNode *root = new TreeNode(val);        int i = il;        for (; i < ir; i++) {            if (val == inorder[i]) {                break;            }        }        root -> left = BT(preorder, pl + 1, pl + i - il, inorder, il, i - 1);        root -> right = BT(preorder, pl + i - il + 1, pr, inorder, i + 1, ir);        return root;    }};


0 0
原创粉丝点击