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

浙江商会网站建设策划方案最新app推广

浙江商会网站建设策划方案,最新app推广,佛山哪里做网站,招商网站建站二叉搜索树的最近公共祖先 题目描述递归 剪枝代码演示: 上期经典 题目描述 难度 - 中等 LC235 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q…

二叉搜索树的最近公共祖先

  • 题目描述
    • 递归 + 剪枝
    • 代码演示:
  • 上期经典

题目描述

难度 - 中等
LC235 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 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 为不同节点且均存在于给定的二叉搜索树中。

在这里插入图片描述

递归 + 剪枝

搜索二叉树(Binary Search Tree)是一种树形结构,它有一个特殊的特性:对于每个节点,其左子树中所有节点的值都小于该节点的值,其右子树中所有节点的值都大于该节点的值。这种特性使得搜索效率非常高。
搜索二叉树具有以下特点:

1.每个节点最多只有两个子节点,分别称为左子节点和右子节点。
2.左子节点小于父节点,右子节点大于父节点。
3.没有重复的节点。

所以对于 BST 来说,根本不需要老老实实去遍历子树,由于 BST 左小右大的性质,将当前节点的值与val1和val2作对比即可判断当前节点是不是LCA:
假设val1 < val2,那么val1 <= root.val <= val2则说明当前节点就是LCA;若root.val比val1还小,则需要去值更大的右子树寻找LCA;若root.val比val2还大,则需要去值更小的左子树寻找最近公共祖先。

题目中说了两个节点肯定在这颗树上,因此可以省去不在的情况的判断。

代码演示:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {// 保证 val1 较小,val2 较大int val1 = Math.min(p.val, q.val);int val2 = Math.max(p.val, q.val);return find(root, val1, val2);
}// 在 BST 中寻找 val1 和 val2 的最近公共祖先节点
TreeNode find(TreeNode root, int val1, int val2) {//base case if(root == null){return null;}//当前节点值大于val2就去左子树去遍历if(root.val > val2){return find(root.left,val1,val2);}// //当前节点值小于val1就去右子树去遍历if(root.val < val1){return find(root.right,val1,val2);}//如果 val1 <= root.val <= val2 说明当前节点就是最近公共祖先return root;
}
}

上期经典

leetcode236. 二叉树的最近公共祖先

http://www.rdtb.cn/news/18138.html

相关文章:

  • 网站建设海报素材优化网站的步骤
  • 哪些网站做机票酒店有优势培训机构哪家最好
  • 物流公司做网站需求seo结算系统
  • 广告公司微网站建设自己建网站详细流程
  • 淄博哪有做网站的互联网销售怎么做
  • 在网站上使用特殊字体百度如何优化
  • 做网站还要买服务器吗每日新闻简报
  • 网站后期维护怎么做口碑营销的产品
  • web 开发 网站开发推广什么软件可以长期赚钱
  • 公司做网站建设价格汕头网站建设推广
  • 做网站平台公司有哪些1000个关键词
  • 网站建设 排名网络营销就是
  • 建设电子商务网站的目的和意义网站设计优化
  • 沂南县建设局网站怎么制作自己公司网站
  • 浙江网站设计公司电话搜狗搜索网
  • 做淘宝客如何建自己的网站武汉seo诊断
  • 广西桂川建设集团网站长沙互联网网站建设
  • 网站建设 网站开发 区别网络营销章节测试答案
  • 沈阳在线制作网站网站seo快速排名优化的软件
  • 开锁换锁公司网站模板百度热门
  • 邦派巴洛特网站是谁做的呀市场调研报告范文模板
  • 郑州高端网站建设多少钱产品推广方案要包含哪些内容
  • 网站宣传的方式哪里做网站便宜
  • 展示型企业网站制作费用什么是新媒体运营
  • 公司logo设计费用一般多少钱百度系优化
  • 郑州 做网站个人免费网上注册公司
  • 凡科网做网站贵吗怎么上百度推广产品
  • 做恋足的视频网站江门seo
  • 做网站策划计划书2023年国家免费技能培训
  • 平顶山企业网站建设在哪里找专业推广团队