当前位置: 首页 > news >正文

pc网站开发工具多站点网站群的建设与管理系统

pc网站开发工具,多站点网站群的建设与管理系统,吉安网站建设兼职,做彩票类网站用什么服务器20 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 n…

20

654. 最大二叉树

给定一个不重复的整数数组 nums最大二叉树 可以用下面的算法从 nums 递归地构建:

  1. 创建一个根节点,其值为 nums 中的最大值。
  2. 递归地在最大值 左边子数组前缀上 构建左子树。
  3. 递归地在最大值 右边子数组后缀上 构建右子树。

返回 nums 构建的 *最大二叉树*

思路

  1. 递归就行了

注意:

一般递归中,可以不用传数组就不传数组,传索引下标记就行了

这里寻找最大值没有优化,但是应该是可以的

代码实现
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def constructMaximumBinaryTree(self, nums: List[int]) -> Optional[TreeNode]:def tranversal(left_index: int, right_index: int) -> TreeNode:#1.寻找构建数组的最大值,以及对应的索引,不变量,左闭右开#2.递归#3.终止条件if left_index == right_index:returnmax_value = -float('inf')max_index = left_indexfor i in range(left_index, right_index):if nums[i] > max_value:max_value = nums[i]max_index = i node = TreeNode(max_value)# print(left_index, right_index, max_index, max_value)node.left = tranversal(left_index, max_index)node.right = tranversal(max_index + 1, right_index)return nodereturn tranversal(0, len(nums))

还有单调栈的实现,后续可以看下

617. 合并二叉树

给你两棵二叉树: root1root2

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

注意: 合并过程必须从两个树的根节点开始。

经典递归咯

代码实现
class Solution:def mergeTrees(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> Optional[TreeNode]:if not root1 and not root2:returnif not root1:return root2if not root2:return root1new_root = TreeNode(root1.val + root2.val)new_root.left = self.mergeTrees(root1.left, root2.left)new_root.right = self.mergeTrees(root1.right, root2.right)return new_root

700. 二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null

代码实现

递归

#         self.right = right
class Solution:def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:#明确二叉搜索树的定义,左小右大, 中序遍历为升序排列if not root or root.val == val:return rootif val > root.val:return self.searchBST(root.right, val)if val < root.val:return self.searchBST(root.left, val)

迭代

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:# #明确二叉搜索树的定义,左小右大, 中序遍历为升序排列# if not root or root.val == val:#     return root# if val > root.val:#     return self.searchBST(root.right, val)# if val < root.val:#     return self.searchBST(root.left, val)# 中序遍历# if not root:return# stack = []# while stack or root:#     while root:#         stack.append(root)#         root = root.left#     root = stack.pop()#     if root.val == val:#         return root #     root = root.right# return rootwhile root:if root.val > val:root = root.leftelif root.val < val:root = root.rightelse:return rootreturn 

98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左

    子树

    只包含

    小于

    当前节点的数。

  • 节点的右子树只包含 大于 当前节点的数。

  • 所有左子树和右子树自身必须也是二叉搜索树。

思路:

遇到二叉搜索树,一定要考虑到中序遍历

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:max_value = -float('inf')def isValidBST(self, root: Optional[TreeNode]) -> bool:#中序遍历,维护一个最大值的变量,遍历的时候判断,root.val和max_value的da'xiaoif not root:return Trueleft = self.isValidBST(root.left)if not left or root.val <= self.max_value:return Falseself.max_value = root.valright = self.isValidBST(root.right)return right
http://www.yayakq.cn/news/873237/

相关文章:

  • 代运网站信息技术网站建设专业
  • 公司网站被侵权加强公司门户网站建设方案
  • spark网站开发排行榜哪个网站最好
  • 爱狼戈网站建设江阴市网站建设
  • 两学一做 网站源码collectfrom企业网站模版
  • 设计网站vcg国内顶尖设计椅子图片
  • 建设工程信息哪个网站有详细信息海外广告优化师
  • wordpress适用于图片站的主题推广运营平台
  • 北京网站设计网站公司二手市场网站开发
  • 做网站优化时 链接名称"首页"有必要添加nofollow吗?网上做环评立项的网站是哪个
  • 论坛网站开发技术行业网站怎么建设
  • 佛山网站建设设计新乡app开发公司
  • 专业响应式网站制作怎么在百度上发布自己的信息
  • 无锡新区网站建设松溪网站建设
  • 网站备案关闭影响排名红铃铛网站建设
  • 做网站的工具有哪些企业网站建设中
  • 房屋经纪人网站端口怎么做做的网站上传到服务器
  • 网站建设的域名和空间价位114黄页的特点
  • 郑州网站建设q.479185700棒百度统计 wordpress
  • 网站建设柒首先金手指8山西网络营销seo
  • 锦州网站建设渠道网站开发语言哪种简单
  • 广东建设信息网站首页浙江省建设局房管科网站
  • dedecms网站地图模板怎么wordpress分类显示博客
  • 湛江找人做网站排名织梦网站上传保存文档
  • 虚拟主机怎么做网站北京网站制作公司
  • 简述建设一个网站的一般过程建立一个公司自己的网站
  • 厦门seo网站建设费用企业所得税税率5% 10% 25%
  • 赣州有没有做网站的gta5线下买房网站建设
  • 网上找兼职的网站苏州工业设计公司排行
  • h5网站开发培训哪里好网页制作模板手稿