leetcode105
Posted AsenYang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode105相关的知识,希望对你有一定的参考价值。
/** * 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) { if (preorder.empty()) return NULL; int root_index = 0; return createBST(preorder,inorder,root_index,preorder.size()-1,root_index); } TreeNode* createBST(vector<int>& preorder, vector<int>& inorder, int start, int end, int& index) { int v = preorder[index]; int i = start; for (i; i <= end; i++) if (v == inorder[i]) break; TreeNode* root = new TreeNode(v); if (i-1 >= start) root->left = createBST(preorder,inorder,start,i-1,++index); if (end >= i+1) root->right = createBST(preorder,inorder,i+1,end,++index); return root; } };
这是一道分治的题目,用先序找到根节点,用中序找到其左右子树。
以上是关于leetcode105的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(算法)- 105. 从前序与中序遍历序列构造二叉树