
3、算法专栏
算法相关知识分享
静_步
爱静静的小步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
检查平衡性
检查平衡性 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过1。 小刘解题 平衡树:任意一个节点,其两棵子树的高度差不超过1。 对于节点A,若其子树为平衡树,那么对于节点A的父节点的判断只需拿A子树的深度与右孩子的深度比较即可。 class Solution { public boolean isBalanced(TreeNode root) { return dfs(root)>=0; } //返回原创 2022-04-26 10:21:42 · 698 阅读 · 0 评论 -
开幕式焰火
开幕式焰火 开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。 给定一棵二叉树 root 代表焰火,节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。 小刘解题 此处求的是节点值得个数,此处可采用HashSet来存储,最后直接返回HashSet的个数。 class Solution { public HashSet<Integer> hashSet=new HashSet<>(); public int numColor(TreeNo原创 2022-04-26 17:10:55 · 906 阅读 · 0 评论 -
二叉搜索树中两个节点之和
二叉搜索树中两个节点之和 给定一个二叉搜索树的根节点root和一个整数k,请判断该二叉搜索树中是否存在两个节点它们的值之和等于k。假设二叉搜索树中节点的值均唯一。 小刘解题 对于递归函数来说,如果递归函数在return位置,那么在每次执行后就会跳出此次函数层,进入下一层,下一层的返回结果就是最终结果而不是上层里面某个位置的值。 class Solution { //定义一个容器用于存放二叉树的值内容 public HashSet<Integer> hashSet = new原创 2022-04-26 11:15:53 · 497 阅读 · 0 评论 -
二叉树的深度
二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 小刘解题 树的深度:也称为树的高度,树中所有节点的层次最大值称为树的深度。 二叉树的递归: ①递:先进到最底层 ②归:将最底层的结果一层一层返回,最后得到根节点的目标值。如果需要需要中间值,可引入全局变量。 class Solution { //树的深度 public int maxDepth(TreeNode root) { //1、此处为原创 2022-04-24 21:42:13 · 344 阅读 · 0 评论 -
二叉搜索树中的搜索
二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点root和一个整数值val。 你需要在BST中找到节点值等于val的节点。 返回以该节点为根的子树。 如果节点不存在,则返回null。 class Solution { public TreeNode searchBST(TreeNode root, int val) { //如果当前节点为空,直接返回null if(root==null){ return null; }原创 2022-04-26 16:51:13 · 247 阅读 · 0 评论 -
二叉树的镜像
二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 小刘解题 镜像二叉树就是原二叉树关于根节点的对称二叉树。 二叉树的递归: ①递:先进到最底层 ②归:进行每一次递归函数的操作。将最底层的结果一层一层返回,最后得到根节点的目标值。如果需要需要中间值,可引入全局变量。 class Solution { //每一次递归操作都是以当前节点为根节点进行操作 public TreeNode mirrorTree(TreeNode root) { //1、此处为递归的原创 2022-04-25 07:46:49 · 201 阅读 · 0 评论 -
并发编程线程基础
线程基础一、什么是线程二、线程的创建与运行1、继承Thread类,重写run()方法2、实现Runnable接口,重写run()方法3、实现Callable接口,重写call()方法三、Object中关于线程的方法介绍四、Thread类的主要方法 一、什么是线程 1、线程是进程的一个实体,线程本身是不会独立存在的。 2、进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程至少有一个线程,进程中的多个线程共享进程的资源。线程是CPU分配的基本单位。原创 2021-06-08 20:24:19 · 80 阅读 · 0 评论 -
对称二叉树
对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 小刘解题 对称二叉树:根节点的左、右子树是互为镜像的。 同时遍历二叉树的两个节点 class Solution { public boolean isSymmetric(TreeNode root) { return dfs(root,root); } //同时遍历两个节点(关于根节点对称的两个节点) public boolean dfs(TreeNode leftNode,TreeN原创 2022-04-25 09:10:41 · 283 阅读 · 0 评论 -
左叶子之和
左叶子之和 给定二叉树的根节点 root ,返回所有左叶子之和。 小刘解题 左叶子:如果一个节点没有左右子树,且其父节点只有该节点一个子节点。 class Solution { public int sumOfLeftLeaves(TreeNode root) { return dfs(root); } public int dfs(TreeNode root){ //定义一个变量,该变量记录的是当前节点的左孩子节点的值 // (原创 2022-04-25 10:47:46 · 350 阅读 · 0 评论 -
展平二叉搜索树
展平二叉搜索树 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 class Solution { //定义一个容器将中序遍历之后的节点存起来(升序) public List<TreeNode> list = new ArrayList<>(); public TreeNode increasingBST(TreeNode root) { p原创 2022-04-26 19:06:07 · 824 阅读 · 0 评论