鱼C论坛

 找回密码
 立即注册
查看: 1864|回复: 0

[技术交流] C++刷LeetCode(654. 最大二叉树)【树】【递归】

[复制链接]
发表于 2020-7-14 12:56:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:
  1. 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:

  2. 二叉树的根是数组中的最大元素。
  3. 左子树是通过数组中最大值左边部分构造出的最大二叉树。
  4. 右子树是通过数组中最大值右边部分构造出的最大二叉树。
  5. 通过给定的数组构建最大二叉树,并且输出这个树的根节点。

  6.  

  7. 示例 :

  8. 输入:[3,2,1,6,0,5]
  9. 输出:返回下面这棵树的根节点:

  10.       6
  11.     /   \
  12.    3     5
  13.     \    /
  14.      2  0   
  15.        \
  16.         1
  17.  

  18. 提示:

  19. 给定的数组的大小在 [1, 1000] 之间。

  20. 来源:力扣(LeetCode)
  21. 链接:https://leetcode-cn.com/problems/maximum-binary-tree
  22. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码


  1. class Solution {
  2. public:
  3.     TreeNode*build(vector<int> :: iterator left, vector<int> :: iterator right){
  4.         if(left == right)return NULL;
  5.         auto temp = max_element(left, right);
  6.         TreeNode* root = new TreeNode(*temp);
  7.         root -> left = build(left, temp);
  8.         root -> right = build(temp + 1, right);
  9.         return root;
  10.     }
  11.     TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
  12.         return build(nums.begin(), nums.end());
  13.     }
  14. };
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 23:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表