【Java数据结构】---二叉树OJ

news2024/9/23 11:22:28

乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen

我的专栏:c语言 ,Java

欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

文章目录

  • 相同的树
  • 另一颗树的子树
  • 翻转二叉树
  • 对称二叉树
  • 平衡二叉树

相同的树

相同的树—力扣
在这里插入图片描述

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //1.判断结构是否一样
        if(p!=null&&q==null || p==null&&q!=null){
            return false;
        }
        //要么都为null 要么都不为null
        if(p==null&&q==null){
            return true;
        }
        //2.判断值是否一样
        if(p.val!=q.val){
            return false;
        }
        //值一样(左子树与左子树比较)
        return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
    }
}

另一颗树的子树

另一颗树的子树—力扣

class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        //当前子树是否和根结点一样
        if(root==null){
            return false;
        }
        if(isSameTree(root,subRoot)){
            return true; 
        }
        if(isSubtree(root.left,subRoot)){
            return true;
        }
        if(isSubtree(root.right,subRoot)){
            return true;
        }
        return false;
    }
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //1.判断结构是否一样
        if(p!=null&&q==null || p==null&&q!=null){
            return false;
        }
        //要么都为null 要么都不为null
        if(p==null&&q==null){
            return true;
        }
        //2.判断值是否一样
        if(p.val!=q.val){
            return false;
        }
        //值一样(左子树与左子树比较)
        return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
    }
}

翻转二叉树

翻转二叉树— 力扣
在这里插入图片描述

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root==null){
            return null;
        }
        TreeNode tmp=root.left;
        root.left=root.right;
        root.right=tmp;
        invertTree(root.left);
        invertTree(root.right); 
        return root;
        
    }
}

对称二叉树

对称二叉树—力扣
在这里插入图片描述

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }
        return isSymmetricChild(root.left,root.right);
    }
        
    public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){
        //左树不为空并且右树为空  或者  左树为空右树不为空
        if(leftTree!=null&&rightTree==null||leftTree==null&&rightTree!=null){
            return false;
        }
        //左树为空并且右树为空
        if(leftTree==null&&rightTree==null){
            return true;
        }
        //左树的值不等于右树的值
        if(leftTree.val!=rightTree.val){
            return false;
        }
        //返回左树的左结点 右树的右结点 并且 左树的右结点 右树的左结点
        return isSymmetricChild(leftTree.left,rightTree.right)&&isSymmetricChild(leftTree.right,rightTree.left);
        }
        
}

平衡二叉树

平衡二叉树—力扣

class Solution {
    public boolean isBalanced(TreeNode root) {
        //如果一棵树是平衡二叉树 那么他的每颗子树都是平衡二叉树(左右子树高度差<=1)
        if(root==null) return true;
        return getHright(root)>=0;
    }
    public int getHright(TreeNode root){
        if(root==null){
            return 0;
        }
        int leftHeight=getHright(root.left);
        if(leftHeight<0){
            return -1;
        }
        int rightHeight=getHright(root.right);

        //绝对值
        if(rightHeight>=0&&Math.abs(leftHeight-rightHeight)<=1){
            return Math.max(leftHeight,rightHeight)+1;
        }else{
            return -1;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2071475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

与copilot 结对编程系列 - log日志重复性检测 - 第4篇 - 网页UI界面

背景 细节可以参考这篇文章: 与copilot 结对编程系列 - log日志重复性检测 - 第1篇 - 总体介绍及效果展示 本文主要将数据库中存储的数据通过网页调用并展示出来, 以下是对详细解释。 web框架选择 当前场景使用 Flask 来展示网页信息. 主要原因如下&#xff1a; 轻量级和易…

如何使用JavaScript获取HTML表单中的值?

在开发中&#xff0c;我们经常需要获取用户在表单中输入的数据&#xff0c;然后进行处理或提交到服务器。今天我们就来聊一聊&#xff0c;如何用JavaScript获取HTML表单中的值。 使用 FormData 构造函数 FormData 是一个非常方便的工具&#xff0c;它可以把表单中的所有数据打包…

C++,std::chrono 详解

文章目录 1. 概述2. 时间点&#xff08;Time Points&#xff09;3. 时间间隔&#xff08;Durations&#xff09;4. 时钟&#xff08;Clocks&#xff09;5. 时间算术6. 时间转换7. 延时参考 1. 概述 std::chrono 是 C11 引入的一个库&#xff0c;用于处理日期和时间。它提供了一…

Unsloth 教程 - 如何微调 Llama-3并导出到 Ollama

本文翻译整理自&#xff1a;&#x1f999; How to Finetune Llama-3 and Export to Ollama https://docs.unsloth.ai/tutorials/how-to-finetune-llama-3-and-export-to-ollama 文章目录 1、什么是Unsloth&#xff1f;2、什么是Ollama&#xff1f;3、安装Unsloth4、选择要微调的…

博弈论总结

公平组合游戏&#xff08;Impartial Game&#xff09;的定义如下&#xff1a; 游戏有两个人参与&#xff0c;二者轮流做出决策&#xff0c;双方均知道游戏的完整信息&#xff1b; 任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关&#xff0c;而与游戏者无关…

pytorch深度学习基础 6(简单的参数估计学习3)

上一篇博客说了如何拟合一条直线ywxb&#xff0c;今天我们现在使用PyTorch进行相同的曲线拟合 拟合y x*x -2x 3 0.1(-1到1的随机值) 曲线 给定x范围&#xff08;0&#xff0c;3&#xff09; 生成数据 import numpy as np import matplotlib.pyplot as plt import torch as t…

小程序学习day13-API Promise化、全局数据共享(状态管理)、分包

44、API Promise化 &#xff08;1&#xff09;基于回调函数的一部API的缺点&#xff1a;小程序官方提供的异步API都是基于回调函数实现的&#xff0c;容易造成回调地狱的问题&#xff0c;代码可读性、可维护性差 &#xff08;2&#xff09;API Promise化概念&#xff1a; 指…

Qt 环境搭建

sudo apt-get upadte sudo apt-get install qt4-dev-tools sudo apt-get install qtcreator sudo apt-get install qt4-doc sudo apt-get install qt4-qtconfig sudo apt-get install qt-demos编译指令 qmake -projectqmakemake实现Ubuntu20,04 与Windows之间的复制粘贴 安装o…

在C#中如何监控其它应用全屏

原文链接&#xff1a;https://www.cnblogs.com/zhaotianff/p/18338275 在C#中判断其它应用全屏可以有多种方案。我这里提供两种思路 使用定时器 在定时器中定时判断当前窗口的状态是否是最大化或者宽高是否等于桌面窗口的宽高。 这种方法我没有去尝试&#xff0c;凭个人经验…

复杂的编辑表格

需求描述 表格可以整体编辑&#xff1b;也可以单行弹框编辑&#xff1b;且整体编辑的时候&#xff0c;依然可以单行编辑 编辑只能给某一列&#xff08;这里是参数运行值&#xff09;修改&#xff0c;且根据数据内容的参数范围来判断展示不同的形式&#xff1a;input/数字输入/单…

小波卷积:为计算机视觉任务开辟新的参数效率之路

论文复述 这篇论文介绍了一种创新的卷积神经网络层——WTConv&#xff0c;它通过小波变换技术显著扩展了CNN的感受野&#xff0c;同时保持了参数效率。WTConv层能够实现对输入数据的多频率响应&#xff0c;增强了模型对形状而非纹理的特征识别能力&#xff0c;提高了在图像分类…

黑神话悟空不只是玩游戏 有人用它3天赚了85W

这几天你是不是在想办法升级电脑配置&#xff0c;买PS5玩黑神话悟空游戏&#xff0c;每一个男人看到那么好的游戏画面&#xff0c;都控制不住想玩&#xff0c;今天分享给大家一些资料&#xff0c;让你快速玩游戏的同时&#xff0c;还能挣点外快&#xff0c;黑神话悟空不只是玩游…

MATLAB 计算两点沿某个方向的间距(81)

MATLAB 计算两点沿某个方向的间距(81) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 上一章介绍了如何计算点到空间直线的距离,这里进一步的,我们也可以计算两个点,沿着某个方向的距离,这在很多处理中都会使用到,实际上就是将两点投影到该方向的直线,再计算间距…

线性表复习之初始化顺序表操作

线性表的顺序表示-初始化顺序表 代码 #include <stdio.h> #define MaxSize 10 // 定义最大长度typedef struct{int data[MaxSize]; // 申请空间&#xff08;静态&#xff09;int length; // 当前长度 }SqList;void InitList(SqList &L){for (int i 0; i < MaxS…

java-队列--黑马

队列 别看这个&#xff0c;没用&#xff0c;还是多刷力扣队列题 定义 队列是以顺序的方式维护一组数据的集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。一般来讲&#xff0c;添加的一端称之尾&#xff0c;而移除一端称为头 。 队列接口定义 // 队列的接口定…

河南萌新联赛2024第(六)场:郑州大学

目录 A-装备二选一&#xff08;一&#xff09;_河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学 (nowcoder.com) 思路&#xff1a; 代码&#xff1a; B-百变吗喽_河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学 (nowcoder.com) …

3DsMax将两个模型的UV展到一个UV上面

3DsMax将两个模型的UV展到一个UV上面 3Dmax中的准备工作 创建一个方块&#xff0c;一个球体&#xff0c;模拟两个模型 添加修改器 打开UV编辑器&#xff0c;快速剥 使用缩放工具&#xff0c;缩放UV&#xff0c;放到一个位置 选择正方形&#xff1a;添加修改器&#xff0…

8.3 数据库基础技术-关系代数

并、交、差 笛卡尔积、投影、选择 自然连接 真题

宝塔面板配置node/npm/yarn/pm2....相关全局变量 npm/node/XXX: command not found

1.打开终端 , cd 到根目录 cd / 2.跳转至node目录下,我的node版本是v16.14.2 cd /www/server/nodejs/v16.14.2/bin 2.1 如果不知道自己node版本多少就跳转到 cd /www/server/nodejs 然后查找当前目录下的文件 ls 确定自己的node版本 cd /node版本/bin 3.继续查看bin…

天润融通助力呷哺呷哺:AI技术赋能3000万会员精细化运营

呷哺集团于1998年11月在北京成立&#xff0c;以“一人一锅”台式小火锅的用餐模式&#xff0c;以及其推出的多样化套餐与良好的用餐服务赢得了众多消费者的青睐&#xff0c;并迅速在市场上占据了一席之地。经过20多年的发展&#xff0c;呷哺呷哺已成为一个多品牌经营、全产业链…