力扣labuladong——一刷day74

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [一、力扣1305. 两棵二叉搜索树中的所有元素](#一、力扣1305. 两棵二叉搜索树中的所有元素)
  • [二、力扣872. 叶子相似的树](#二、力扣872. 叶子相似的树)

前言


二叉树的构造算法通用思路很简单,无非就是构造根节点,然后递归构造左右子树,最后把它们接起来,关键在于如何找到根节点和左右子树的节点,不同的序列化方法,找根节点的方式也不同

一、力扣1305. 两棵二叉搜索树中的所有元素

java 复制代码
/**
 * 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 {
    List<Integer> l1 = new ArrayList<>();
    List<Integer> l2 = new ArrayList<>();
    public List<Integer> getAllElements(TreeNode root1, TreeNode root2) {
        fun(root1, l1);
        fun(root2, l2);
        List<Integer> res = new ArrayList<>();
        int index1 = 0, index2 = 0;
        while(index1 < l1.size() && index2 < l2.size()){
            if(l1.get(index1) < l2.get(index2)){
                res.add(l1.get(index1));
                index1 ++;
            }else{
                res.add(l2.get(index2));
                index2 ++;
            }
        }
        while(index1 < l1.size()){
            res.add(l1.get(index1));
            index1 ++;
        }
        while(index2 < l2.size()){
            res.add(l2.get(index2));
            index2 ++;
        }
        return res;
    }
    public void fun(TreeNode root, List<Integer> l){
        if(root == null){
            return;
        }
        fun(root.left, l);
        l.add(root.val);
        fun(root.right, l);
    }
}

二、力扣872. 叶子相似的树

java 复制代码
/**
 * 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 {
    public boolean leafSimilar(TreeNode root1, TreeNode root2) {
        List<Integer> l1 = new ArrayList<>();
        List<Integer> l2 = new ArrayList<>();
        fun(root1, l1);
        fun(root2, l2);
        int index = 0;
        while(index < l1.size() && index < l2.size()){
            if(l1.get(index) != l2.get(index)){
                return false;
            }
            index ++;
        }
        if(index < l1.size() || index < l2.size()){
            return false;
        }
        return true;
    }
    public void fun(TreeNode root, List<Integer> l){
        if(root == null){
            return ;
        }
        fun(root.left,l);
        if(root.left == null && root.right == null){
            l.add(root.val);
        }
        fun(root.right, l);
    }
}
相关推荐
老鼠只爱大米1 分钟前
LeetCode经典算法面试题 #46:全排列(回溯、交换、剪枝等五种实现方案详细解析)
算法·leetcode·剪枝·回溯·全排列·stj算法
专注VB编程开发20年2 分钟前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
(>_<)6 分钟前
java minio 分片上传工具类与测试demo
java·minio·分片上传
不想打工的码农6 分钟前
MyBatis-Plus多数据源实战:被DBA追着改配置后,我肝出这份避坑指南(附动态切换源码)
java·后端
Dovis(誓平步青云)15 分钟前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
Coder_Boy_21 分钟前
Deeplearning4j+ Spring Boot 电商用户复购预测案例
java·人工智能·spring boot·后端·spring
踢足球092929 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
闻哥32 分钟前
Kafka高吞吐量核心揭秘:四大技术架构深度解析
java·jvm·面试·kafka·rabbitmq·springboot
金牌归来发现妻女流落街头34 分钟前
【Springboot基础开发】
java·spring boot·后端
_OP_CHEN41 分钟前
【算法基础篇】(五十七)线性代数之矩阵乘法从入门到实战:手撕模板 + 真题详解
线性代数·算法·矩阵·蓝桥杯·c/c++·矩阵乘法·acm/icpc