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

力扣-数据结构-11【算法学习day.82】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.单值二叉树

题目链接:965. 单值二叉树 - 力扣(LeetCode)

题面:

代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    Boolean ans = true;
    int flag = 0;
    public boolean isUnivalTree(TreeNode root) {
        flag = root.val;
        recursion(root);
        return ans;
    }
    public void recursion(TreeNode node){
        if(node==null||ans==false)return;
        if(node.val!=flag){
            ans = false;
            return;
        }
        recursion(node.left);
        recursion(node.right);
    }
}

2.翻转等价二叉树

题目链接: 951. 翻转等价二叉树 - 力扣(LeetCode)

题面:

思路:模拟题目中求是否是等价二叉树的过程 

代码: 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    Boolean ans = true;
    public boolean flipEquiv(TreeNode root1, TreeNode root2) {
        if((root1==null&&root2!=null)||(root1!=null&&root2==null))return false;
        recursion(root1,root2);
        return ans;
    }
    public void recursion(TreeNode node1,TreeNode node2){
        if(node1==null||ans==false)return;
        if(node1.val!=node2.val){
            ans = false;
            return;
        }
        if(node1.left!=null&&node1.right!=null){
            if(node2.left==null||node2.right==null){
                ans = false;
                return;
            }
            if(node2.left.val==node1.right.val&&node2.right.val==node1.left.val){
                reverse(node1);
            }else if(node1.left.val!=node2.left.val||node1.right.val!=node2.right.val){
                ans = false;
                return;  
            }
            
        }else if(node1.left!=null){
            if((node2.left!=null&&node2.right!=null)||(node2.left==null&&node2.right==null)){
                ans = false;
                return;
            }
            int k = node1.left.val;
            if(node2.left!=null){
                if(k!=node2.left.val){
                    ans = false;
                    return;
                }
            }else{
                int r2 = node2.right.val;
                if(k==r2){
                    reverse(node1);
                }else{
                    ans = false;
                    return;
                }
            }
        }else if(node1.right!=null){
            if((node2.left!=null&&node2.right!=null)||(node2.left==null&&node2.right==null)){
                ans = false;
                return;
            }
            int k = node1.right.val;
            if(node2.right!=null){
                if(k!=node2.right.val){
                    ans = false;
                    return;
                }
            }else{
                int r2 = node2.left.val;
                if(k==r2){
                    reverse(node1);
                }else{
                    ans = false;
                    return;
                }
            }
        }else{
            if(node2.left!=null||node2.right!=null){
                ans = false;
                return;
            }
        }
        if(node1.left!=null){
         recursion(node1.left,node2.left);   
        }
        if(node1.right!=null){
         recursion(node1.right,node2.right);
        }
    }
    public void reverse(TreeNode node){
        TreeNode left = node.left;
        TreeNode right = node.right;
        node.left = right;
        node.right = left;
    }
}

后言

上面是数据结构相关的习题,下一篇文章会将其他相关的习题。


http://www.kler.cn/a/470157.html

相关文章:

  • Python学习笔记:显示进度条
  • Vue项目中的问题汇总(持续更新中)
  • Android Telephony | 协议测试针对 test SIM attach network 的问题解决(3GPP TS 36523-1-i60)
  • Webstorm整合Tabnine AI 编码工具
  • Apache Celeborn 在B站的生产实践
  • Git 常用命令及其使用场景
  • ros2笔记-2.5.3 多线程与回调函数
  • Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享
  • 掌握销售‘先机’,HubSpot邮件跟踪软件让销售更智能
  • 激活城市数字化文化产业“新质生产力”,虚拟数字人化身城市代言人
  • 【机器学习】机器学习的基本分类-自监督学习-变换预测(Transformation Prediction)
  • RedisTemplate执行lua脚本及Lua 脚本语言详解
  • 20250103在Ubuntu20.04.5的Android Studio 2024.2.1.12中跑通Hello World
  • 了解什么是JavaEE(什么是JavaEE)
  • PHP语言的并发编程
  • 一个使用 Nginx 进行反向代理和负载均衡的示例配置
  • gozero实现对接开放平台分贝通中新建费用报销的sdk设计与解决方案
  • CAD随机球体插件专业版V1.3版本更新
  • 大数据组件(三)快速入门实时计算平台Dinky
  • XHR readyState:深入了解XMLHttpRequest的状态管理
  • 《Vue进阶教程》第三十五课:自动脱ref
  • C语言基础:指针(常量指针和指针常量)
  • js -音频变音(听不出说话的人是谁)
  • Flink系列知识讲解之:网络监控、指标与反压
  • 计算机的错误计算(二百零三)
  • 2025年最新 Tensorflow paddlepaddle与CUDA 、Python、cuDNN的版本对应表 一一对应关系,torch和CUDA的对应表