1457. 二叉树中的伪回文路径 --力扣 --JAVA

简介: 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。

 题目

给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。

请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。

解题思路

    1. 首先确定方法来判断是否为伪回文,可以通过Map来存储出现过的值,当第二次出现时删除,当Map大小小于等于1时则为伪回文;
    2. 通过递归遍历每一条从根节点到子节点的路径;
    3. 在进行左右子树遍历时需重新构建数据,避免数据干扰;

    代码展示

    class Solution {
        private int ans = 0;
        public int pseudoPalindromicPaths (TreeNode root) {
            Map<Integer,Integer> data = new HashMap<>();
            countPath(root, data);
            return ans;
        }
        public void countPath(TreeNode root, Map<Integer,Integer> data){
            if(root != null) {
                if (data.get(root.val) != null) {
                    data.remove(root.val);
                } else {
                    data.put(root.val, 0);
                }
                if (root.left == null && root.right == null) {
                    if (data.size() == 1 || data.size() == 0) {
                        ans++;
                    }
                } else {
                    if(root.left != null) {
                        countPath(root.left, new HashMap<>(data));
                    }
                    if(root.right != null) {
                        countPath(root.right, new HashMap<>(data));
                    }
                }
            }
        }
    }

    image.gif


    目录
    相关文章
    |
    Java
    java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
    java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
    318 9
    |
    11月前
    |
    算法 Java 测试技术
    Java 从入门到实战完整学习路径与项目实战指南
    本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
    417 4
    |
    12月前
    |
    Go 开发者 索引
    【LeetCode 热题100】路径与祖先:二叉树中的深度追踪技巧(力扣33 / 81/ 153/154)(Go语言版)
    本文深入探讨了LeetCode中四道关于「搜索旋转排序数组」的经典题目,涵盖了无重复和有重复元素的情况。通过二分查找的变形应用,文章详细解析了每道题的解题思路和Go语言实现代码。关键点包括判断有序区间、处理重复元素以及如何缩小搜索范围。文章还总结了各题的异同,并推荐了类似题目,帮助读者全面掌握二分查找在旋转数组中的应用。无论是初学者还是有经验的开发者,都能从中获得实用的解题技巧和代码实现方法。
    483 14
    【LeetCode 36】113.路径总和II
    【LeetCode 36】113.路径总和II
    159 0
    |
    算法 Go
    【LeetCode 热题100】深入理解二叉树结构变化与路径特性(力扣104 / 226 / 114 / 543)(Go语言版)
    本博客深入探讨二叉树的深度计算、结构变换与路径分析,涵盖四道经典题目:104(最大深度)、226(翻转二叉树)、114(展开为链表)和543(二叉树直径)。通过递归与遍历策略(前序、后序等),解析每题的核心思路与实现方法。结合代码示例(Go语言),帮助读者掌握二叉树相关算法的精髓。下一讲将聚焦二叉树构造问题,欢迎持续关注!
    362 10
    |
    Go
    【LeetCode 热题100】路径与祖先:二叉树中的深度追踪技巧(力扣437 / 236 )(Go语言版)
    本文深入探讨二叉树中路径与祖先问题,涵盖两道经典题目:LeetCode 437(路径总和 III)和236(最近公共祖先)。对于路径总和 III,文章分析了双递归暴力解法与前缀和优化方法,后者通过哈希表记录路径和,将时间复杂度从O(n²)降至O(n)。在最近公共祖先问题中,采用后序遍历递归查找,利用“自底向上”的思路确定最近公共祖先节点。文中详细解析代码实现与核心要点,帮助读者掌握深度追踪技巧,理解树结构中路径与节点关系的本质。这类问题在面试中高频出现,掌握其解法意义重大。
    295 4
    |
    Java
    java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
    java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
    492 34
    |
    Java Android开发
    Eclipse Java 构建路径
    Eclipse Java 构建路径
    211 3
    |
    IDE Java 编译器
    Java:如何确定编译和运行时类路径是否一致
    类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
    985 5
    |
    算法 Java
    JAVA 二叉树面试题
    JAVA 二叉树面试题
    136 0