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

做网站是如何赚钱的莱芜网站优化是什么

做网站是如何赚钱的,莱芜网站优化是什么,西安 网站空间,个人微信crm系统提示:100道LeetCode热题-8-3主要是二叉树相关,包括三题:将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素。由于初学,所以我的代码部分仅供参考。 目录 前言 题目1:将有序数组转换为二叉搜索树…

提示:100道LeetCode热题-8-3主要是二叉树相关,包括三题:将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素。由于初学,所以我的代码部分仅供参考。


目录

前言

题目1:将有序数组转换为二叉搜索树

1.题目要求:

2.结果代码:

题目2:验证二叉搜索树

1.题目要求:

2.结果代码:

题目3:二叉搜索树中第K小的元素

1.题目要求:

2.结果代码:

总结


前言

五一快乐~

二叉搜索树奉上~


提示:以下是本篇文章正文内容,下面结果代码仅供参考

题目1:将有序数组转换为二叉搜索树

1.题目要求:

题目如下:

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。

示例 1:

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示:

  • 1 <= nums.length <= 10^{4}
  • -10^{4} <= nums[i] <= 10^{4}
  • nums 按 严格递增 顺序排列

代码框架已经提供如下:

# Definition for a binary tree node.

# class TreeNode(object):

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution(object):

    def sortedArrayToBST(self, nums):

        """

        :type nums: List[int]

        :rtype: Optional[TreeNode]

        """

       

2.结果代码:

class Solution(object):def sortedArrayToBST(self, nums):if not nums:returnmid_index = len(nums) // 2return TreeNode(nums[mid_index], self.sortedArrayToBST(nums[:mid_index]), self.sortedArrayToBST(nums[mid_index + 1:]))

说明:

1)更快,Python 的列表切片操作在底层是高度优化的,对于小数组,切片操作的常数开销可能比递归调用的开销小。

2)小心Python 的递归深度默认为 1000。如果数组非常大,递归调用可能会导致栈溢出。。

题目2:验证二叉搜索树

1.题目要求:

题目如下:

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

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

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]
输出:true

示例 2:

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示:

  • 树中节点数目范围在[1, 10^{4}] 内
  • -2^{31} <= Node.val <= 2^{31} - 1

代码框架已经提供如下:

# Definition for a binary tree node.

# class TreeNode(object):

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution(object):

    def isValidBST(self, root):

        """

        :type root: Optional[TreeNode]

        :rtype: bool

        """

2.结果代码:

方法一:递归检查(带范围)

# Definition for a binary tree node.
class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""def is_valid_bst_helper(node, lower=float('-inf'), upper=float('inf')):if not node:return Trueif node.val <= lower or node.val >= upper:return Falsereturn (is_valid_bst_helper(node.left, lower, node.val) andis_valid_bst_helper(node.right, node.val, upper))return is_valid_bst_helper(root)
  1. 定义了一个递归辅助函数 is_valid_bst_helper,它接收三个参数。

  2. 如果当前节点为空(nodeNone),返回 True,因为空树是有效的二叉搜索树。

  3. 如果当前节点的值小于等于下界或大于等于上界,返回 False,因为这违反了二叉搜索树的性质。

  4. 递归检查左右子树:

    • 对左子树递归调用时,更新上界为当前节点的值(node.val),因为左子树的所有值必须小于当前节点的值。

    • 对右子树递归调用时,更新下界为当前节点的值,因为右子树的所有值必须大于当前节点的值。

    • 递归检查左右子树是否都满足二叉搜索树的性质。

方法二:中序遍历

# Definition for a binary tree node.
class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""stack = []prev_val = float('-inf')curr = rootwhile curr or stack:while curr:stack.append(curr)curr = curr.leftcurr = stack.pop()if curr.val <= prev_val:return Falseprev_val = curr.valcurr = curr.rightreturn True

  1. 使用一个栈来模拟递归的调用过程,初始化一个指针 curr 指向根节点,prev_val 用于记录上一个访问的节点值(初始为负无穷)。

  2. 遍历过程:

    • 沿着左子树一直向下,将节点压入栈中,直到左子树为空。

    • 弹出栈顶节点(即当前子树的根节点),检查其值是否大于 prev_val

    • 如果当前节点的值小于等于 prev_val,返回 False,因为这违反了二叉搜索树的性质。

    • 更新 prev_val 为当前节点的值,然后将指针移动到右子树。

题目3:二叉搜索树中第K小的元素

1.题目要求:

题目如下:

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。

示例 1:

输入:root = [3,1,4,null,2], k = 1
输出:1

示例 2:

输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3

提示:

  • 树中的节点数为 n 。
  • 1 <= k <= n <= 10^{4}
  • 0 <= Node.val <= 10^{4}

进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

代码框架已经提供如下:

# Definition for a binary tree node.

# class TreeNode(object):

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution(object):

    def kthSmallest(self, root, k):

        """

        :type root: Optional[TreeNode]

        :type k: int

        :rtype: int

        """

2.结果代码:

class Solution:def kthSmallest(self, root, k):stack = []curr = rootcount = 0while curr or stack:while curr:stack.append(curr)curr = curr.leftcurr = stack.pop()count += 1if count == k:return curr.valcurr = curr.right

说明:使用栈模拟递归过程,避免递归调用的开销。

逻辑

  1. 使用栈存储节点,模拟递归的中序遍历。

  2. 先将当前节点的所有左子节点压入栈中。

  3. 弹出栈顶节点,计数加 1,检查是否为第 k 个节点。

  4. 如果未达到第 k 个节点,继续遍历右子树。

进阶优化:如果二叉搜索树经常被修改(插入/删除操作),并且需要频繁查找第 k 小的值,可以采用以下优化方法:

  1. 存储子树大小:在每个节点中增加一个字段,记录其左子树的节点数量。这样可以在遍历时快速跳过不必要的子树。

  2. 高效查找:通过子树大小信息,直接定位到第 k 小的节点,而无需完整遍历。

这种方法的时间复杂度为 O(h),其中 h 是树的高度,对于平衡二叉搜索树,复杂度为 O(log n)。


总结

针对二叉树的三种题型进行了学习,了解了部分有关二叉树与python的相关知识,大家加油!


文章转载自:

http://BdidY3iL.tbwsL.cn
http://jSMsvIJF.tbwsL.cn
http://sa9zVn7j.tbwsL.cn
http://XQC0ILE2.tbwsL.cn
http://G8QTMNf5.tbwsL.cn
http://TG2g9OEg.tbwsL.cn
http://gs3cgcuK.tbwsL.cn
http://yB8tZ2V1.tbwsL.cn
http://4GTWPMU0.tbwsL.cn
http://TVEvq9Qo.tbwsL.cn
http://7zkS4b5l.tbwsL.cn
http://nyvWiX85.tbwsL.cn
http://Pn438xN2.tbwsL.cn
http://3OJq3Gij.tbwsL.cn
http://wrbciOVz.tbwsL.cn
http://HFTZYpwI.tbwsL.cn
http://d4w2HFVp.tbwsL.cn
http://VKHWYiuH.tbwsL.cn
http://dPmYmbKC.tbwsL.cn
http://Ej7L0DS4.tbwsL.cn
http://0ch4z103.tbwsL.cn
http://VuJnFRwZ.tbwsL.cn
http://MsOHODyN.tbwsL.cn
http://Ixc78zti.tbwsL.cn
http://u7hTcZ5R.tbwsL.cn
http://yuxq5XpW.tbwsL.cn
http://nkBeBkBs.tbwsL.cn
http://KkS1GtqW.tbwsL.cn
http://UFYf8cVO.tbwsL.cn
http://Mv5fYts4.tbwsL.cn
http://www.dtcms.com/wzjs/684886.html

相关文章:

  • 网站办事服务建设情况网站开发国际化
  • 深圳免费网站建设分销商城系统定制开发
  • 百度提交网站淘宝上可以做网站吗
  • 大型网站seo课程电子商务都包括什么
  • 青岛手机端建站模板如何免费制作网站
  • flash网站首页上海集团网站建设公司好
  • 首页网站关键词优化教程做网站的qq兼职
  • 网站的后期运营及维护费用建站的流程是什么需要什么步骤
  • 做关于什么样的网站好跨境电商网站开发公司
  • 做侵权视频网站iis 制作搜索网站
  • 百度网站的结构公司网站优化去哪里学
  • 在谷歌上网站推广腾讯网页版wordpress
  • 网站代码如何做优化广州市白云区建设局 网站
  • 福田企业网站优化有用吗企业微信自建应用怎么开发
  • 网站建设心得体会范文益阳 网站制作维护
  • 网站建设怎么管理业务员定制一个企业网站多少钱
  • 网站建设发帖论坛社区wordpress s3插件
  • 做logo设计网站重庆专题片制作
  • 长沙企业网站学生作业做网站需要什么
  • 网站制作怎么做网站策划常用软件
  • 青岛建设交易中心网站深圳比较好的vi设计公司
  • 专门做文创产品的网站成都家具企业网站建设
  • 如何做有亮点的网站建设方案wordpress 汉化
  • wordpress制作网站模板wordpress桌面应用程序
  • 网站网址怎么做二维码山东钢铁股份有限公司莱芜分公司
  • 自己做网站需要服务器wordpress增加分类
  • 重庆网站建设狐灵威海教育行业网站建设
  • python做网站安全性电脑优化是什么意思
  • 上海中艺建设集团网站wordpress评论居中
  • 顶岗实践网站开发免费制作购物网站