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


    目录
    相关文章
    |
    21天前
    |
    消息中间件 前端开发 Java
    java学习路径
    【4月更文挑战第9天】java学习路径
    17 1
    |
    2月前
    |
    算法 Java 程序员
    Java检查字符串是否为回文
    Java检查字符串是否为回文
    |
    19天前
    |
    算法 Java C语言
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    |
    2月前
    |
    算法
    LeetCode[题解] 1261. 在受污染的二叉树中查找元素
    LeetCode[题解] 1261. 在受污染的二叉树中查找元素
    16 1
    |
    21天前
    |
    设计模式 前端开发 安全
    Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
    【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
    16 1
    |
    6天前
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    [leetcode~dfs]1261. 在受污染的二叉树中查找元素
    |
    13天前
    |
    算法 API DataX
    二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
    二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
    |
    13天前
    |
    算法 DataX
    二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
    二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
    |
    15天前
    |
    算法
    【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
    【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
    |
    15天前
    【力扣】409.最长回文串
    【力扣】409.最长回文串