还不快抢沙发

添加新评论

给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 - 左子树是通过数组中最大值左边部分构造出的最大二叉树。 - 右子树是通过数组中最大值右边部分构造出的最大二叉树。 - 通过给定的数组构建最大二叉树,并且输出这个树的根节点。 ``` 输入: [3,2,1,6,0,5] 输入: 返回下面这棵树的根节点: 6 / \ 3 5 \ / 2 0 \ 1 ``` 递归实现: ``` TreeNode* constructMaximumBinaryTree(vector& nums) { if (nums.empty()) { return NULL; } auto iter = max_element(nums.begin(), nums.end()); vector left, right; for (auto i = nums.begin(); i != nums.end(); i++) { if (i < iter) { left.push_back(*i); } if (i > iter) { right.push_back(*i); } } TreeNode* root = new TreeNode(*iter); root->left = constructMaximumBinaryTree(left); root->right = constructMaximumBinaryTree(right); return root; } ```