嗯 非常的简洁优雅,贴一个现在vector版本的 vector<int> fragment(vector<int> v, int a, int b) { vector<int> result(v.begin() + a, v.begin() + b); return result; } TreeNode *reConstructBinaryTree(vector<int> pre, vector<int> vin) { if (pre.size() == 0 || vin.size() == 0) return nullptr; TreeNode *root = new TreeNode(pre[0]); for (int i = 0; i < vin.size(); i++) { if (vin[i] == pre[0]) { root->left = reConstructBinaryTree(fragment(pre, 1, 1 + i), fragment(vin, 0, i)); root->right = reConstructBinaryTree(fragment(pre, i + 1, pre.size()), fragment(vin, i + 1, vin.size())); break; } } return root; }</int></int></int></int></int>
点赞

相关推荐

正在热议
牛客网
牛客企业服务