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

随想录刷题笔记 —二叉树篇7 617合并二叉树 700二叉搜索树中的搜索 98验证二叉搜索树

617合并二叉树

递归:如果root1和root2其中有一个为空,则将另一个的结点直接赋值即可——将该节点和子树都直接赋值过去了。

如果都不是空,就需要重新建立一个结点再进入递归。

class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if(root1==null){return root2;}if(root2==null){return root1;}TreeNode node = new TreeNode();node.val = root1.val+root2.val;node.left = mergeTrees(root1.left, root2.left);node.right = mergeTrees(root1.right, root2.right);return node;}
}

700二叉搜索树中的搜索

二叉查找:如果节点值大于val则向左查找,小于则向右查找

解法一:迭代法

class Solution {public TreeNode searchBST(TreeNode root, int val) {while (root!=null){if (root.val==val){return root;}if (root.val<val){root = root.right;}else {root = root.left;}}return null;}
}

解法二:递归

class Solution {public TreeNode searchBST(TreeNode root, int val) {if (root==null||root.val==val){return root;}if (root.val<val){return searchBST(root.right, val);}else {return searchBST(root.left, val);}}
}

98验证二叉搜索树

注意判断结点值需要大于左子树的最大值,右子树需要大于节点值,因此就可以判断左>中>右

递归:设置maxBST值,标记当前左边部分的最大值。

使用中序遍历,因此maxBST的值顺序为左中右

class Solution {TreeNode maxBST = null;public boolean isValidBST(TreeNode root) {if (root.left!=null){if (root.val<=root.left.val||!isValidBST(root.left)){return false;}}if (maxBST!=null&&maxBST.val>=root.val){return false;}maxBST = root;if (root.right!=null){return root.val < root.right.val && isValidBST(root.right);}return true;}
}

收获

二叉搜索树是左子树全部小于根节点小于右子树,而不只是单纯的左孩子小于根节点小于右孩子

相关文章:

  • C++数据结构与算法——双指针法
  • python-使用ffmpeg批量修改文件的后缀名
  • vue自定义指令(图文示例)
  • Leetcode3026. 最大好子数组和
  • 基于BP算法的SAR成像matlab仿真
  • Sora时代,我们的AI应该何去何从?——关于Sora大模型的思考
  • IIC--集成电路总线
  • C++ 多起点的bfs(五十九)【第六篇】
  • 文生图提示词:天气条件
  • 数据结构之时空复杂度
  • 软件工程师,超过35岁怎么办
  • spring cloud stream
  • MySQL的配置文件my.cnf正常的配置项目
  • 信息安全性测试
  • 【图像分割 2023】BRAU-Net++
  • Angular 2 DI - IoC DI - 1
  • avalon2.2的VM生成过程
  • Codepen 每日精选(2018-3-25)
  • Debian下无root权限使用Python访问Oracle
  • go append函数以及写入
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript从右向左截取指定位数字符的3种方法
  • js对象的深浅拷贝
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js中forEach回调同异步问题
  • js作用域和this的理解
  • leetcode388. Longest Absolute File Path
  • markdown编辑器简评
  • Netty源码解析1-Buffer
  • node 版本过低
  • spring security oauth2 password授权模式
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 初识MongoDB分片
  • 当SetTimeout遇到了字符串
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端之React实战:创建跨平台的项目架构
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 软件开发学习的5大技巧,你知道吗?
  • 收藏好这篇,别再只说“数据劫持”了
  • 算法系列——算法入门之递归分而治之思想的实现
  • 运行时添加log4j2的appender
  • 我们雇佣了一只大猴子...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)llvm ir转换过程
  • (js)循环条件满足时终止循环
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (补)B+树一些思想
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (一)SpringBoot3---尚硅谷总结
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程