灰色 网站,电子商城网站设计论文,wordpress 权限,网站 设计公司 温州654.最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下#xff1a; 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大…654.最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二叉树并且输出这个树的根节点。 示例
思路
参考 很显然是递归的思路和构建树差不多。
class TreeNode(object):def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right rightclass Solution(object):def constructMaximumBinaryTree(self, nums)::type nums: List[int]:rtype: TreeNode# 第一步 特殊情况处理if len(nums) 0:return None# 第二步 找出最大值及其索引max_val max(nums)root TreeNode(valmax_val) # 构建根节点split_index nums.index(max_val) # 找出最大值的索引# 第三步 确定左右的numsleft_nums nums[:split_index]right_nums nums[split_index1:]# 第四步 递归root.left self.constructMaximumBinaryTree(left_nums)root.right self.constructMaximumBinaryTree(right_nums)return root