diff options
Diffstat (limited to 'binary_tree_traversal.cpp')
-rw-r--r-- | binary_tree_traversal.cpp | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/binary_tree_traversal.cpp b/binary_tree_traversal.cpp deleted file mode 100644 index 601e21c..0000000 --- a/binary_tree_traversal.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "leetcode.h" - -class Solution { -public: - TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { - unordered_map<int, int> m; - for (int i = 0; i < inorder.size(); i++) - m[inorder[i]] = i; - return splitTree(preorder, m, 0, 0, inorder.size() - 1); - } - -private: - TreeNode *splitTree(vector<int> &preorder, unordered_map<int, int> &m, - int pix, int iLeft, int iRight) { - int rVal = preorder[pix], iMid = m[rVal]; - TreeNode *root = new TreeNode(rVal); - if (iMid > iLeft) - root->left = splitTree(preorder, m, pix + 1, iLeft, iMid - 1); - if (iMid < iRight) - root->right = - splitTree(preorder, m, pix + iMid - iLeft + 1, iMid + 1, iRight); - return root; - } -}; |