代码随想录算法训练营第十九

news/2024/11/24 9:29:16/

98.验证二叉搜索树

class Solution {public boolean isValidBST(TreeNode root) {Stack<TreeNode> stack = new Stack<>();TreeNode pre = null;if(root != null){stack.add(root);}while(!stack.isEmpty()){TreeNode curr = stack.peek();if(curr != null){stack.pop();if(curr.right != null){stack.add(curr.right);}stack.add(curr);stack.add(null);if(curr.left != null){stack.add(curr.left);}}else {stack.pop();TreeNode temp = stack.pop();if(pre != null && pre.val >= temp.val){return false;}pre = temp;}}return true;}
}

700. 二叉搜索树中的搜索

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

617. 合并二叉树

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

654. 最大二叉树

class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {
if(nums.length == 0){return null;}int max = 0;Map<Integer,Integer> map = new HashMap<>();for(int i = 0 ; i < nums.length ; i++){max = Math.max(max,nums[i]);map.put(nums[i],i);}int index = map.get(max);TreeNode root = new TreeNode(max);int[] leftNums = new int[index];int[] rightNums = new int[nums.length-1-index];for(int i = 0 ; i < index; i ++){leftNums[i] = nums[i];}for(int i = index+1 ; i < nums.length ; i++){rightNums[i-(index+1)] = nums[i];}root.left = constructMaximumBinaryTree(leftNums);root.right = constructMaximumBinaryTree(rightNums);return root;}
}


http://www.ppmy.cn/news/722795.html

相关文章

GPIO点灯

简述&#xff1a;本人使用教材为《嵌入式系统原理与应用》&#xff0c;GPIOCON控制输出&#xff0c;GPIODAT控制高电平和低电平&#xff0c;高电平点亮&#xff0c;低电平熄灭。

你在寻找什么人

发信人: annajully (星语心雨), 信区: Girls标 题: [合集]校园恋爱学分[转载]发信站: 南京大学小百合站 (Fri Jan 25 16:14:55 2002), 站内信件 iceleaf (请赐予我offer吧) 于Fri Jan 25 13:09:43 2002)提到&#xff1a; 你在寻找什么人 寻寻觅觅&#xff0c;冷冷清清&#…

关于低调的一些文章——最长的一篇

喜欢高调&#xff0c;是我们这个时代的时尚。事情还没有开始做&#xff0c;首先就先说出来&#xff1b;成功的可能性只有一点&#xff0c;首先就描述一个美好的蓝图&#xff1b;实在没有什么值得说了&#xff0c;还要“炒作”&#xff0c;因为我们惟一的目的就是&#xff1a;吸…

外刊IT网站经典计算机开发,评论,总结文章汇总共享

全部文章 2013年十二月 (19) 25: 辞掉你的工作&#xff0c;去开发一个应用&#xff1a;我的创业故事 (5) 24: 你是一个努力工作的程序员吗&#xff1f;还是一个懒惰的程序员&#xff1f; (7) 23: 动画演示10个有趣但毫无用处的Linux命令 (…

spring事务的传播性与隔离性

spring事务的传播性 REQUIRED&#xff08;必须的&#xff09;(TransactionDefinition.PROPAGATION_REQUIRED) 使用当前的事务&#xff0c;如果当前没有事务&#xff0c;则自己新建一个事务&#xff0c;子方法是必须运行在一个事务中的&#xff0c;如果当前存在事务&#xff0c…

Linux netlink用户态和内核态间通信

文章目录 前言一、内核态编程二、用户态编程三、代码测试结果 前言 请参考&#xff1a;Linux 网络之netlink 简介 一、内核态编程 用了 Netlink Socket 库中的函数和数据结构&#xff0c;通过 Netlink Socket 接收消息并将消息发送回用户空间进程。 代码说明&#xff1a; …

进制的前缀表示

二进制&#xff1a;0b或0B开头表示一个二进制数 例如&#xff1a;0b1001 的十进制为 9 八进制&#xff1a;0开头表示一个八进制数 例如&#xff1a;010 的十进制为 8 十六进制&#xff1a;0x或0X开头表示一个十六进制数 例如&#xff1a;0x1A 的十进制为 26

CAN2.0A 和CAN2.0B

CAN2.0A 是CAN协议的PART A部分&#xff0c;此部分定义了11bit的标识区 。 CAN2.0B 是CAN协议的扩展部分&#xff0c;也叫PART B&#xff0c;定义了29bit的标识区&#xff0c;其它部分与CAN2.0A一样。 CANOpen是基于CAN协议的应用层协议&#xff0c;可以理解为用户层&#xff…