LEETCODE: Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:电脑定时开关机软件 编辑:程序博客网 时间:2024/05/17 01:13

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 binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode *buildTree(vector<int>::iterator prebegin, vector<int>::iterator preend,                         vector<int>::iterator inbegin, vector<int>::iterator inend) {        if(prebegin == preend) return NULL;        TreeNode *root = new TreeNode(*prebegin);        auto pos = find(inbegin, inend, *prebegin);        int length = pos - inbegin;        root->left = buildTree(prebegin + 1, prebegin + length + 1, inbegin, inbegin + length);        root->right = buildTree(prebegin + length + 1, preend, inbegin + length + 1, inend);          return root;    }    TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {        return buildTree(preorder.begin(), preorder.end(), inorder.begin(), inorder.end());    }};




0 0
原创粉丝点击