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

自助建站系统模板大连装修网站推广

自助建站系统模板,大连装修网站推广,福建网站建建设,撰写网站策划书题目 235. 二叉搜索树的最近公共祖先 中等 #xff08;简单#xff09; 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为#xff1a;“对于有根树 T 的两个结点 p、q简单 相关标签 树   深度优先搜索   二叉搜索树   二叉树 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为“对于有根树 T 的两个结点 p、q最近公共祖先表示为一个结点 x满足 x 是 p、q 的祖先且 x 的深度尽可能大一个节点也可以是它自己的祖先。” 例如给定如下二叉搜索树:  root  [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root [6,2,8,0,4,7,9,null,null,3,5], p 2, q 8 输出: 6 解释: 节点 2 和节点 8 的最近公共祖先是 6。示例 2: 输入: root [6,2,8,0,4,7,9,null,null,3,5], p 2, q 4 输出: 2 解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。 说明: 所有节点的值都是唯一的。p、q 为不同节点且均存在于给定的二叉搜索树中。 思路和解题方法 使用迭代的方式进行查找。首先将 ancestor 初始化为根节点 root。然后在一个无限循环中进行以下判断 如果 p-val 和 q-val 都小于 ancestor-val说明 p 和 q 都在 ancestor 的左子树中因此将 ancestor 更新为 ancestor-left。如果 p-val 和 q-val 都大于 ancestor-val说明 p 和 q 都在 ancestor 的右子树中因此将 ancestor 更新为 ancestor-right。如果以上两个条件都不满足说明 p 和 q 分别位于 ancestor 的左右子树中或者其中一个节点就是 ancestor。此时找到了最近公共祖先退出循环。 最后返回 ancestor 即为最近公共祖先的节点。 由于输入的二叉搜索树符合规范且假设 p 和 q 一定存在于树中因此该算法可以正确找到最近公共祖先。 复杂度 时间复杂度: O(n) 时间复杂度O(n)其中 nnn 是给定的二叉搜索树中的节点个数。分析思路与方法一相同。 空间复杂度 O(1) 空间复杂度O(1)。 c 代码 class Solution { public:// 返回二叉搜索树中p和q节点的最近公共祖先TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ancestor root; // 初始化最近公共祖先为根节点rootwhile (true) {if (p-val ancestor-val q-val ancestor-val) { // 如果p、q都小于ancestor说明p、q在ancestor的左子树中ancestor ancestor-left; // 将ancestor更新为其左子树的节点}else if (p-val ancestor-val q-val ancestor-val) { // 如果p、q都大于ancestor说明p、q在ancestor的右子树中ancestor ancestor-right; // 将ancestor更新为其右子树的节点}else { // 如果p、q分别位于ancestor的左右子树中或者其中一个节点就是ancestor则找到了最近公共祖先退出循环break;}}return ancestor; // 返回最近公共祖先} };附递归版本迭代版本容易懂 class Solution { public:// 返回二叉搜索树中p和q节点的最近公共祖先TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root-val p-val root-val q-val) { // 如果root的值大于p和q的值则说明p和q都在root的左子树中继续往root的左子树中搜索return lowestCommonAncestor(root-left, p, q);} else if (root-val p-val root-val q-val) { // 如果root的值小于p和q的值则说明p和q都在root的右子树中继续往root的右子树中搜索return lowestCommonAncestor(root-right, p, q);} else {return root; // 否则root为最近公共祖先直接返回root}} };觉得有用的话可以点点赞支持一下。 如果愿意的话关注一下。会对你有更多的帮助。 每天都会不定时更新哦  人  。
http://www.hkea.cn/news/14309186/

相关文章:

  • thinkphp做企业网站seo是免费推广吗?
  • 网站智能云wordpress更换网站域名
  • 网站开发合同注意事件有哪些北京小程序开发多少钱
  • 青岛建网站的公司东莞市疾控中心官网
  • 网站开发报价方案电子商务的网站案例
  • 河南建筑业城乡建设网站查询免费微信微网站模板下载
  • 工商核名在哪个网站长沙网站seo技术厂家
  • 网页制作网站首页龙华建网站多少钱
  • 必应搜索网站代码运行框wordpress
  • 网站负责人 备案网站开发 后端服务
  • wordpress开启子域名多站点模式微网站 小程序 区别
  • 百度站长验证网站失败重庆的网站建设公司
  • 用树莓派做网站服务器网站备案为什么要闭站
  • 北京网站建设公司 北京网站设计 网页设计制作 高端网站建设 分形科技菏泽建设企业网站
  • 网站怎么做图片动态图片不显示不出来的专做负面的网站
  • 协会网站制作好用的ppt模板网站
  • 网站开发技术选型网站策划建设方案书
  • 注册了域名 网站怎么做万网域名注册信息查询
  • 网站如何搭建开发一个电商app软件多少钱
  • 山东省建设厅网站查网站建设规划模板
  • 范县网站建设电话全椒县城乡规划建设局网站
  • 软件it网站建设方案wordpress的支付插件
  • 重庆旅游seo整站优化安徽安庆属于南方还是北方
  • 公众号做视频网站会封吗异次元wordpress模板
  • 怎么申请域名建网站做模拟人生比较有名的网站
  • 阳谷网站建设费用南充做网站电话
  • 峰峰做网站泰国网站建设
  • 优秀网站设计平台asp.net做网站步骤
  • 网站静态生成目录 名称 建议广东十大网站建设品牌
  • 企业网站建设多长时间安顺住房和城乡建设部网站