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

西安 网站建设网络营销案例ppt课件

西安 网站建设,网络营销案例ppt课件,网站备案完成后接下来怎么做,智能建站网站目录: 目的 思路 复杂度 记忆秘诀 python代码 目的: 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找o1 和 o2 的最近公共祖先节点。 思路 这个任务目和上一题在二叉搜索树中找到两个节点的最近公共祖先有点类…

目录:

目的

思路

复杂度

记忆秘诀

python代码

目的:

给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找o1 和 o2 的最近公共祖先节点。


思路

这个任务目和上一题在二叉搜索树中找到两个节点的最近公共祖先有点类似,都是找最近公共祖先。但是区别在于一个有序一个无序。

力扣刷题TOP101: 30.BM37 二叉搜索树的最近公共祖先-CSDN博客 

特点普通二叉树二叉搜索树
数据结构特性无排序特性,任意结构左小右大,具有排序特
算法实现深度优先搜索(DFS),逐层递归利用节点值,逐层比较,不需要完整遍历
时间复杂度O(n),需要访问所有节点O(h),只需沿着路径查找
适用范围任意二叉树仅适用于二叉搜索树
效率较低较高

代码逻辑:

  • 如果当前节点为空

    • 说明这里没有要找的两个节点,直接返回 -1 表示没有找到。
  • 如果当前节点就是其中一个目标节点

    • 说明当前节点可能是最近公共祖先(或者它是两个节点之一),直接返回当前节点的值。
  • 递归查找左右子树

    • 递归地查找左子树,看是否能找到目标节点之一。如果找到了,返回对应的值;如果没找到,返回 -1
    • 递归地查找右子树,看是否能找到目标节点之一。如果找到了,返回对应的值;如果没找到,返回 -1
  • 根据左右子树的结果判断

    • 如果左子树没找到(返回 -1),说明两个节点都在右子树,直接返回右子树的结果。
    • 如果右子树没找到(返回 -1),说明两个节点都在左子树,直接返回左子树的结果。
    • 如果左右子树都找到了目标节点,说明当前节点是它们的最近公共祖先,直接返回当前节点的值。

示例:假设有以下二叉树,目标是找到节点 45 的最近公共祖先

        1/ \2   3/ \4   5

递归过程:

  • 从根节点 1 开始

    • 左子树递归:去节点 2 中查找。
    • 右子树递归:去节点 3 中查找。
  • 节点 2 的子树

    • 左子树递归:在节点 4 找到目标节点 4
    • 右子树递归:在节点 5 找到目标节点 5
    • 左右子树都找到目标,返回节点 2 作为最近公共祖先。
  • 节点 3 的子树

    • 左右子树递归:都为空,返回 -1
  • 回到根节点 1

    • 左子树返回节点 2。
    • 右子树返回 -1
    • 因为只有左子树找到目标,最终结果是节点 2

复杂度

  • 时间复杂度:O(n)

    • 这是一个典型的 深度优先搜索(DFS),每个节点在递归过程中最多会被访问一次。
  • 空间复杂度:O(h)

    • 最坏情况下(链表形式的树):O(h), 其中 h 是树的高度。
    • 最佳情况下(完全平衡的树):O(log⁡h)。

记忆秘诀

  • 子树为空,返回无结果
  • 当前节点是目标节点,返回自己
  • 递归查找左右子树

    • 两边都找到,当前节点是答案;

    • 只找到一边,继续返回那边结果


python代码

class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Solution:def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int:# 该子树没找到,返回-1if not root:return -1# 该节点是其中某一个节点if root.val == o1 or root.val == o2:return root.val# 左子树寻找公共祖先left = self.lowestCommonAncestor(root.left, o1, o2)# 右子树寻找公共祖先right = self.lowestCommonAncestor(root.right, o1, o2)# 左子树为没找到,则在右子树中if left == -1:return right# 右子树没找到,则在左子树中if right == -1:return left# 否则是当前节点return root.val

* 欢迎大家探讨新思路,能够更好的理解和记忆

http://www.mmbaike.com/news/66128.html

相关文章:

  • 做网站挣钱打擦边球开封网站推广
  • 浦江做网站推广模式包括哪些模式
  • 南通单位网站建设如何在网上推广自己的公司
  • vs2015 做网站自己的品牌怎么做加盟推广
  • 苏州建网站皆去苏州聚尚网络广州seo网络优化公司
  • 禅城做网站手机seo排名软件
  • 同一个服务器的网站做有链优化大师免费安装下载
  • 杭州做网站的企业娱乐热搜榜今日排名
  • 百度安装下载seo网络推广经理招聘
  • 电商网站建设内容规划怎么推广比较好
  • 环保网站模板下载搜索关键词查询工具
  • 商城网站标题新手怎么入行seo
  • 深圳建网站的专业公司网络营销题库案例题
  • ionic做网站世界杯最新排名
  • 一个域名建多个网站外贸网站建站和推广
  • 漯河网站建设公司外贸网站
  • 深圳微商城网站制作价格申请网站域名要多少钱
  • 深圳专业app网站开发如何在百度推广自己的产品
  • 北京网站建设qq群中国进入全国紧急状态
  • 用ps做网站的首页小说推广接单平台
  • 网站qq线客服咋做广告投放网站
  • 网站升级维护期间能访问吗营业推广方式
  • 做网站有几个软件百度搜索风云榜小说
  • 网站域名的安全性威海seo
  • 网站开发按钮素材微信朋友圈广告投放
  • 共青城网站建设seo网络优化专员
  • 怎样做模具钢网站论坛排名
  • 网站制作服务平台短网址生成器免费
  • 爱站工具想说超人下拉系统网站推广网络营销方案
  • 长春seo服务seo是什么意思呢