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

扬州市网站建设_网站建设公司_VS Code_seo优化

做网站知名的学习网站,如何做vip影视网站,我是一条龙,如何修改网站主页654. 最大二叉树 核心#xff1a;记住递归三部曲#xff0c;一般传入的参数的都是题目给好的了#xff01;把构造树类似于前序遍历一样就可#xff01;就是注意单层递归的逻辑#xff01; # Definition for a binary tree node. # class TreeNode: # def __init__(se…654. 最大二叉树 核心记住递归三部曲一般传入的参数的都是题目给好的了把构造树类似于前序遍历一样就可就是注意单层递归的逻辑 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def constructMaximumBinaryTree(self, nums: List[int]) - Optional[TreeNode]:# 递归三部曲if not nums:return max_ max(nums)max_index nums.index(max_)root TreeNode(max_)root.left self.constructMaximumBinaryTree(nums[:max_index])root.right self.constructMaximumBinaryTree(nums[max_index 1:])return rootdef constructMaximumBinaryTree2(self, nums: List[int]) - Optional[TreeNode]:# 递归的三部曲 1.确定参数以及返回值--传入数组输出节点 2.结束递归条件--如果数组len1说明遍历到叶子节点了 3.单层逻辑--找到最大值以及最大值的下标if len(nums) 1:return TreeNode(nums[0]) node TreeNode(0)max_numb 0max_index 0 for i in range(len(nums)):if nums[i] max_numb:max_index imax_numb nums[i]node.val max_numb# 判断下标值是否大于0 说明是否有左子树if max_index 0:new_list nums[:max_index]node.left self.constructMaximumBinaryTree(new_list)if max_index len(nums) - 1:new_list nums[max_index 1:]node.right self.constructMaximumBinaryTree(new_list)return node 617. 合并二叉树 思路以建立的节点为标准类似于前缀【中后序】遍历进行构造或者使用迭代法【建立两个队列进行维护就好了】 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def mergeTrees(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) - Optional[TreeNode]:# 终止条件但凡有一个节点为空就返回另一个节点如果另一个也为None就直接返回None# 以创建的新节点为移动标准if not root1:return root2if not root2:return root1node TreeNode()node.val root1.val root2.valnode.left self.mergeTrees(root1.left, root2.left)node.right self.mergeTrees(root1.right, root2.right)return nodedef mergeTrees1(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) - Optional[TreeNode]:if not root1 and not root2:return node TreeNode(0)if root1 and root2:node.val root1.val root2.valnode.left self.mergeTrees(root1.left,root2.left)node.right self.mergeTrees(root1.right, root2.right)elif root1 and not root2:node.val root1.valnode.left self.mergeTrees(root1.left,None)node.right self.mergeTrees(root1.right,None)else:node.val root2.valnode.left self.mergeTrees(None,root2.left)node.right self.mergeTrees(None,root2.right)return node 700. 二叉搜索树中的搜索 思想使用层次遍历或者使用递归或迭代 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:# 层次遍历def searchBST(self, root: Optional[TreeNode], val: int) - Optional[TreeNode]:queue_1 []if not root:# return queue_1.append(root) 犯下了致命弱智的错误return Nonequeue_1.append(root)while len(queue_1) 0:node queue_1.pop(0)if node.val val:return nodeif node.left:queue_1.append(node.left)if node.right:queue_1.append(node.right)return None# 迭代法def searchBST(self, root: Optional[TreeNode], val: int) - Optional[TreeNode]:while root:if root.val val:root root.leftelif root.val val:root root.rightelse:return rootreturn None# 递归法def searchBST(self, root: TreeNode, val: int) - TreeNode:# 为什么要有返回值: # 因为搜索到目标节点就要立即return# 这样才是找到节点就返回搜索某一条边如果不加return就是遍历整棵树了。if not root or root.val val: return rootif root.val val: return self.searchBST(root.left, val)if root.val val: return self.searchBST(root.right, val) 98. 验证二叉搜索树 核心理解中序遍历的规则在二叉树中中序遍历出来的结果一定是有序的 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def __init__(self):self.nums []def isValidBST(self, root: Optional[TreeNode]) - bool:# 中序遍历出来的数一定是有序的self.nums [] # 清空数组self.traversal(root)for i in range(1, len(self.nums)):# 注意要小于等于搜索树里不能有相同元素if self.nums[i] self.nums[i - 1]:return Falsereturn Truedef traversal(self, root):if root is None:returnself.traversal(root.left)self.nums.append(root.val) # 将二叉搜索树转换为有序数组self.traversal(root.right)# 设置最小值比较就可以修改了单层逻辑那个地方左了一个比较 class Solution:def __init__(self):self.maxVal float(-inf) # 因为后台测试数据中有int最小值def isValidBST(self, root):if root is None:return Trueleft self.isValidBST(root.left)# 中序遍历验证遍历的元素是不是从小到大if self.maxVal root.val:self.maxVal root.valelse:return Falseright self.isValidBST(root.right)return left and right
http://www.lebaoying.cn/news/101732.html

相关文章:

  • 邢台网站建设多少钱新河镇网站制作
  • 网站任务界面深圳网站定制设计
  • 一个网站从开发到上线的过程网页画图工具
  • 学ps做兼职的网站有哪些王业侨
  • 广州市公司网站建设平台宿主选择 网站建设
  • 建立网站费用多少空投糖果网站开发
  • 淘宝上的网站建设为什么便宜wordpress后台用的是
  • 重庆梁平网站建设哪家便宜简历代写
  • 玩具网站的制作南宁建设网站哪里好
  • 嘉兴城乡建设局门户网站晨阳seo
  • 广告设计网站免费首饰盒东莞网站建设
  • 站酷app招聘网站开发工程师
  • 美橙网站维护怎么推广公司网站
  • 企业网站设计服务公司论文检索网站怎么做
  • 网站屏蔽右键js网站记住密码怎么做
  • 快速搭建网站 优帮云西安网络推广网站优化
  • 网站与网页的区别.广东建设监理协会网站题库
  • 昆山网站建设有限公司怎么样wordpress app下载模板下载
  • wordpress 443端口肇庆网页关键词优化
  • 网站开发 作品理念电子商务平台开发
  • 自己做网站切入地图做网站具体步骤
  • 电商网站的费用怎么做帐xyz域名注册局官方网站
  • 社区教育网站开发做交易平台的网站需要哪些技术
  • 注册了一个域名怎么做网站河南地区建设工程信息网
  • dedecms仿下拉菜单网站公司如何建设一个网站
  • 企业网站制作设seo 知乎
  • 温州网站建设怎么样wordpress按住标题没有显
  • 南宁做网站公司品牌云尚网络沈阳搜索排名公司
  • 永久免费网站ai生成建筑网站
  • 网站为什么显示正在建设中国家备案查询系统