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

力扣-数据结构-10【算法学习day.81】

前言

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


习题

1.反转二叉树以匹配先序遍历

题目链接:971. 翻转二叉树以匹配先序遍历 - 力扣(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 {

    List<Integer> ans = new ArrayList<>();
    int idx = -1;

    public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) {
        return dfs(root, voyage) ? ans : Arrays.asList(-1);
    }

    boolean dfs(TreeNode node, int[] voyage) {
        // 空节点肯定满足, 直接返回 true
        if (node == null) { return true; }

        idx++;
        // 检查当前节点的值和 voyage 数组对应位置的值是否一致
        if (node.val != voyage[idx]) { return false; }
        // 需要进行翻转的情况
        if (node.left != null && node.right != null &&
            node.left.val != voyage[idx+1]) {
            TreeNode tmp = node.left;
            node.left = node.right;
            node.right = tmp;
            ans.add(node.val);
        }
        // 递归处理左子树和右子树
        return dfs(node.left, voyage) && dfs(node.right, voyage);
    }
}

后言

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

 

 


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

相关文章:

  • IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案
  • 学习路之VScode--自定义按键写注释(插件)
  • UniApp | 从入门到精通:开启全平台开发的大门
  • 安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮
  • 服务器数据恢复—服务器硬盘亮黄灯的数据恢复案例
  • AfuseKt1.4.4 | 刮削视频播放器,支持阿里云盘和自动海报墙
  • 浅谈Beam Search
  • “混合双打”二维数组展平的有效方案(Python)
  • 【SqlSugar雪花ID常见问题】.NET开源ORM框架 SqlSugar 系列
  • requests请求带cookie
  • 深入理解Java Map集合
  • 逻辑回归(Logistic Regression)深度解析
  • 在Swagger(现称为OpenAPI)中各类@api之间的区别
  • k8s系列--docker拉取镜像导入k8s的containerd中
  • HTML——56.表单发送
  • 从零开始学桶排序:Java 示例与优化建议
  • 2025.01.02 一月 | 充分地接受生活本身
  • python中常用的内置函数介绍
  • Java开发工具-Jar命令
  • 面试经典问题 —— 链表之返回倒数第k个节点(经典的双指针问题)
  • RK3568适配美格(MEIG-SLM3XX)4G模块
  • JavaWeb开发(五)Servlet-ServletContext
  • 大数据-266 实时数仓 - Canal 对接 Kafka 客户端测试
  • 数字图像总复习
  • ubuntu切换到root用户
  • 【C++动态规划】2088. 统计农场中肥沃金字塔的数目|2104