1457. Pseudo-Palindromic Paths in a Binary Tree

Difficulty:
Related Topics:
Similar Questions:

    Problem

    Given a binary tree where node values are digits from 1 to 9. A path in the binary tree is said to be pseudo-palindromic if at least one permutation of the node values in the path is a palindrome.

    **Return the number of *pseudo-palindromic* paths going from the root node to leaf nodes.**

      Example 1:

    Input: root = [2,3,1,3,1,null,1]
    Output: 2 
    Explanation: The figure above represents the given binary tree. There are three paths going from the root node to leaf nodes: the red path [2,3,3], the green path [2,1,1], and the path [2,3,1]. Among these paths only red path and green path are pseudo-palindromic paths since the red path [2,3,3] can be rearranged in [3,2,3] (palindrome) and the green path [2,1,1] can be rearranged in [1,2,1] (palindrome).
    

    Example 2:

    Input: root = [2,1,1,1,3,null,null,null,null,null,1]
    Output: 1 
    Explanation: The figure above represents the given binary tree. There are three paths going from the root node to leaf nodes: the green path [2,1,1], the path [2,1,3,1], and the path [2,1]. Among these paths only the green path is pseudo-palindromic since [2,1,1] can be rearranged in [1,2,1] (palindrome).
    

    Example 3:

    Input: root = [9]
    Output: 1
    

      Constraints:

    Solution

    /**
     * Definition for a binary tree node.
     * function TreeNode(val, left, right) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.left = (left===undefined ? null : left)
     *     this.right = (right===undefined ? null : right)
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number}
     */
    var pseudoPalindromicPaths  = function(root) {
        return dfs(root, Array(10).fill(0), 0);
    };
    
    var dfs = function(node, map, numOfOdd) {
        if (!node) return 0;
        if (map[node.val] % 2) {
            numOfOdd -= 1;
        } else {
            numOfOdd += 1;
        }
        if (!node.left && !node.right) {
            return numOfOdd <= 1 ? 1 : 0;
        }
        map[node.val] += 1;
        var res = dfs(node.left, map, numOfOdd)
            + dfs(node.right, map, numOfOdd);
        map[node.val] -= 1;
        return res;
    };
    

    Explain:

    nope.

    Complexity:

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy