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

随想录刷题笔记 —二叉树篇9 236二叉树最近公共祖先 235二叉搜索树最近公共祖先 701二叉搜索树插入操作

236二叉树最近公共祖先

后序遍历:递归到头,或者该结点是p或q那么则返回该结点。

如果左和右返回的都不是空,那么此节点就是深度最大的公共结点。

如果左是空,那么就返回右。

class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == null || root == p || root == q){return root;}TreeNode left = lowestCommonAncestor(root.left, p, q);TreeNode right = lowestCommonAncestor(root.right, p, q);if(left!=null && right!=null){return root;}if(left==null){return right;}else{return left;}}}

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

跟上一题思路一致

由于是二叉搜索树因此可以通过值来减少不必要判断。

class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == null || root == p || root == q){return root;}TreeNode left = null;TreeNode right = null;if (root.val>p.val||root.val>q.val){left = lowestCommonAncestor(root.left, p, q);}if (root.val<p.val||root.val<q.val){right = lowestCommonAncestor(root.right, p, q);}if(left!=null && right!=null){return root;}if(left==null){return right;}else{return left;}}
}

701二叉搜索树插入操作

递归查找,找到合适位置的空结点插入

class Solution {public TreeNode insertIntoBST(TreeNode root, int val) {if (root==null){return new TreeNode(val, null, null);}TreeNode node = root;while (node!=null){if (val<node.val){if (node.left==null){node.left = new TreeNode(val, null, null);break;}node = node.left;}if (val>node.val){if (node.right==null){node.right = new TreeNode(val, null, null);break;}node = node.right;}}return root;}
}

收获

后序遍历加回溯=逆序查找

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • anomalib1.0学习纪实-续1:增加新算法
  • [力扣 Hot100]Day30 两两交换链表中的节点
  • 三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型
  • vue3 + Babylon.js 实现3D场景
  • Unity中关于群组的一些组件
  • 第三百六十六回
  • 剪辑视频衔接怎么操作 剪辑视频衔接过渡自然方法 剪辑视频教程新手入门 抖音剪辑短视频 会声会影视频制作教程
  • MySQL数据库操作
  • 爬虫知识--02
  • HTTP缓存技术
  • 服务器4c16g中的c指什么?或者4h什么意思?
  • Mysql如何优化数据查询方案
  • 单片机学习笔记---LED呼吸灯直流电机调速
  • 【Jvm】性能调优(下)线上问题排查思路汇总
  • 202428读书笔记|《风吹哪页读哪页》——答案在路上,自由在风里,身处井隅,心向璀璨
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 2017-08-04 前端日报
  • canvas绘制圆角头像
  • create-react-app做的留言板
  • java多线程
  • JS+CSS实现数字滚动
  • Python学习笔记 字符串拼接
  • React-redux的原理以及使用
  • React的组件模式
  • vue-loader 源码解析系列之 selector
  • Vue实战(四)登录/注册页的实现
  • webgl (原生)基础入门指南【一】
  • 动态规划入门(以爬楼梯为例)
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端学习笔记之观察者模式
  • 一个JAVA程序员成长之路分享
  • 怎么将电脑中的声音录制成WAV格式
  • ​业务双活的数据切换思路设计(下)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (接口封装)
  • (四)Linux Shell编程——输入输出重定向
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Linux整合apache和tomcat构建Web服务器
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net 程序发生了一个不可捕获的异常
  • .Net 执行Linux下多行shell命令方法
  • @angular/cli项目构建--http(2)
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [] 与 [[]], -gt 与 > 的比较
  • [04]Web前端进阶—JS伪数组
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [android学习笔记]学习jni编程
  • [c]扫雷
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [HTML]一文掌握
  • [k8s源码]6.reflector
  • [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
  • [leetcode] Multiply Strings