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

闸北手机网站建设个人开个装修小公司

闸北手机网站建设,个人开个装修小公司,新手网站建设,帮忙做简历的网站一、二叉搜索树的最小绝对差(Leetcode 530) 思路1 :中序遍历将二叉树转化为有序数组,然后暴力求解。 class Solution:def __init__(self):# 初始化一个空的列表,用于保存树的节点值self.vec []def traversal(self, r…

一、二叉搜索树的最小绝对差(Leetcode 530)

思路1 :中序遍历将二叉树转化为有序数组,然后暴力求解。

class Solution:def __init__(self):# 初始化一个空的列表,用于保存树的节点值self.vec = []def traversal(self, root):# 递归函数进行中序遍历,填充self.vec列表if root is None:return  # 如果当前节点为空,直接返回# 先递归遍历左子树self.traversal(root.left)# 将当前节点的值添加到vec列表中self.vec.append(root.val)# 然后递归遍历右子树self.traversal(root.right)def getMinimumDifference(self, root):# 清空self.vec,确保每次调用时都能重新计算最小差值self.vec = []# 中序遍历树,将节点值按升序存入self.vecself.traversal(root)# 如果树中少于两个节点,则没有有效的差值可计算,返回0if len(self.vec) < 2:return 0# 初始化最小差值为正无穷大,用于后续的最小差值比较result = float('inf')# 遍历self.vec,计算相邻节点值之间的差值for i in range(1, len(self.vec)):# 计算相邻节点之间的差值,并更新最小差值result = min(result, self.vec[i] - self.vec[i - 1])# 返回最小差值return result

思路2:双指针直接操作二叉树,求任意不同节点值的最小差。

class Solution:def __init__(self):# 初始化最小差值为正无穷,表示尚未计算差值self.result = float('inf')# 初始化pre为None,用来记录上一个访问的节点self.pre = Nonedef traversal(self, cur):# 如果当前节点为空,直接返回if cur is None:return# 递归遍历左子树self.traversal(cur.left)# 计算当前节点与上一个节点的差值if self.pre is not None:  # 如果pre不为空,说明当前节点不是最左边的节点# 更新最小差值,计算当前节点与前一个节点的差值,并更新result为更小的值self.result = min(self.result, cur.val - self.pre.val)# 记录当前节点,作为下一个节点的前一个节点self.pre = cur# 递归遍历右子树self.traversal(cur.right)def getMinimumDifference(self, root):# 调用traversal进行中序遍历self.traversal(root)# 返回计算得到的最小差值return self.result

二、二叉搜索树中的众数(Leetcode 501)

思路1:利用字典

from collections import defaultdict# 定义二叉树节点类 TreeNode
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = rightclass Solution:# 在BST中搜索并统计每个节点的值的频率def searchBST(self, cur, freq_map):if cur is None:return# 统计当前节点值的频率freq_map[cur.val] += 1# 递归遍历左子树self.searchBST(cur.left, freq_map)# 递归遍历右子树self.searchBST(cur.right, freq_map)# 找出二叉搜索树中的出现频率最高的值def findMode(self, root):# 初始化一个字典来记录每个元素的频率,使用defaultdict方便处理未出现的键freq_map = defaultdict(int)result = []# 如果根节点为空,返回空列表if root is None:return result# 调用递归方法遍历二叉树并统计频率self.searchBST(root, freq_map)# 获取频率的最大值max_freq = max(freq_map.values())# 找出所有出现频率等于最大值的元素for key, freq in freq_map.items():if freq == max_freq:result.append(key)# 返回频率最高的值return result

思路二:利用二叉树性质

class Solution:def __init__(self):self.maxCount = 0  # 最大频率self.count = 0  # 当前频率self.pre = None  # 前一个节点self.result = []  # 存储众数# 用中序遍历BST,并统计节点值的频率def searchBST(self, cur):if cur is None:return# 递归遍历左子树self.searchBST(cur.left)  # 左# 中if self.pre is None:  # 第一个节点,初始化频率为1self.count = 1elif self.pre.val == cur.val:  # 当前节点与前一个节点值相同,增加频率self.count += 1else:  # 当前节点与前一个节点值不同,重新计数为1self.count = 1# 更新前一个节点为当前节点self.pre = cur  # 更新前一个节点# 如果当前节点的频率等于最大频率,将该节点值添加到结果列表if self.count == self.maxCount:  self.result.append(cur.val)# 如果当前节点的频率大于最大频率,更新最大频率,并清空结果列表,将当前节点值加入if self.count > self.maxCount:  self.maxCount = self.count  # 更新最大频率self.result = [cur.val]  # 清空结果列表并将当前节点值加入# 递归遍历右子树self.searchBST(cur.right)  # 右returndef findMode(self, root):self.count = 0  # 重置频率self.maxCount = 0  # 重置最大频率self.pre = None  # 重置前一个节点self.result = []  # 清空结果列表self.searchBST(root)  # 调用searchBST进行遍历并统计return self.result  # 返回众数

三、二叉树的最近公共祖先(Leetcode 236)

class Solution:# 定义一个函数来寻找最近公共祖先def lowestCommonAncestor(self, root, p, q):# 基本的终止条件# 1. 如果当前节点是 p 或 q,返回当前节点。# 2. 如果当前节点是 None,说明这条路径不包含 p 或 q,返回 None。if root == q or root == p or root is None:return root# 递归遍历左子树,找到 p 和 q 中其中一个的最近公共祖先left = self.lowestCommonAncestor(root.left, p, q)# 递归遍历右子树,找到 p 和 q 中其中一个的最近公共祖先right = self.lowestCommonAncestor(root.right, p, q)# 如果左子树和右子树分别都找到了 p 或 q,说明当前节点是最近公共祖先# 因为 p 和 q 分别位于左右子树if left is not None and right is not None:return root# 如果左子树找到了 p 或 q,右子树为 None,说明公共祖先在左子树if left is None and right is not None:return right# 如果右子树找到了 p 或 q,左子树为 None,说明公共祖先在右子树elif left is not None and right is None:return left# 如果左右子树都为 None,说明当前节点不是公共祖先,返回 Noneelse:return None

文章转载自:

http://0lHhiWUW.jnptt.cn
http://jHPTqmcJ.jnptt.cn
http://sCCKrU5M.jnptt.cn
http://vRDb1OgN.jnptt.cn
http://xTW3jvFP.jnptt.cn
http://fGc2WxHd.jnptt.cn
http://QcMB2HQA.jnptt.cn
http://JEgToUZ9.jnptt.cn
http://Pm55QwOY.jnptt.cn
http://9VjEXco6.jnptt.cn
http://r7iqY3aW.jnptt.cn
http://tMvXwB4x.jnptt.cn
http://L10kucxF.jnptt.cn
http://v8Pgt2Cq.jnptt.cn
http://cHAwB1HQ.jnptt.cn
http://rrS8AImS.jnptt.cn
http://wqw2bgK3.jnptt.cn
http://8LqSEcjU.jnptt.cn
http://l3xF25FL.jnptt.cn
http://PJAjsweT.jnptt.cn
http://dHbgozfD.jnptt.cn
http://zjlKH5Rz.jnptt.cn
http://zYh2HVsa.jnptt.cn
http://Ia49rYkh.jnptt.cn
http://2g16Bbxe.jnptt.cn
http://faRHbmha.jnptt.cn
http://csVe6Bgq.jnptt.cn
http://yfoZxXTQ.jnptt.cn
http://l7rttSpe.jnptt.cn
http://3Sqs4KuF.jnptt.cn
http://www.dtcms.com/wzjs/730741.html

相关文章:

  • 个人 中小企业公司网站建设方案网站推广
  • 永嘉专业网站建设团队樟木头网站仿做
  • 做简单的企业网站需要学哪些wordpress可以做seo吗
  • wordpress 移动建站手机写网页
  • wordpress全站音频建设银行网站公告在哪
  • 贵阳网站设计模板个人电台网站模版
  • WordPress为什么给我发邮件seo顾问赚钱吗
  • 搭建网站用什么软件如何确定wordpress
  • 建站都需要什么开放平台api
  • 动态h5网站开发广州公司摇号申请网站
  • 专业的网站设计建设网站做收付款接口
  • 北京的网站建设收费标准学校网站建设介绍范文
  • 电子商务的建站流程0元创业
  • 江门网站制作华企立方刘涛做的婴儿玩具网站
  • 搭积木建网站软件建站宝盒破解版
  • 建网站app需要多少钱天津住房和城乡建设建造师网站
  • 设计公司网站建设模板图ps海报制作教程步骤的网站
  • 做网站项目所需资源电子网站模板
  • 专业的团队网站建设建设银行官网首页网站招聘
  • 站长工具黄网站推广的方式
  • 移动端购物网站建设目的微网站建设价格对比
  • 东莞手机网站建设怎么选文案策划公司
  • 北京西直门附近网站建设公司一般网站建设的流程
  • 做一个官方网站需要多少钱台州网页设计模板
  • 手机建网站 优帮云苏州推荐网络公司建网站
  • 网站开发案例详解微信公众号文章怎么转wordpress
  • 网站建设的优点与不足网页设计的八种样式
  • c 建设网站iis建设旅游网站的功能定位
  • 承德做网站的公司google play三件套
  • 用php做电商网站有哪些江西网站建设技术