北京的網(wǎng)站設(shè)計(jì)公司線上營銷策劃方案
題目:
1457. 二叉樹中的偽回文路徑
給你一棵二叉樹,每個(gè)節(jié)點(diǎn)的值為 1 到 9 。我們稱二叉樹中的一條路徑是 「偽回文」的,當(dāng)它滿足:路徑經(jīng)過的所有節(jié)點(diǎn)值的排列中,存在一個(gè)回文序列。
請(qǐng)你返回從根到葉子節(jié)點(diǎn)的所有路徑中?偽回文?路徑的數(shù)目。
示例 1:
輸入:root = [2,3,1,3,1,null,1] 輸出:2 解釋:上圖為給定的二叉樹??偣灿?3 條從根到葉子的路徑:紅色路徑 [2,3,3] ,綠色路徑 [2,1,1] 和路徑 [2,3,1] 。在這些路徑中,只有紅色和綠色的路徑是偽回文路徑,因?yàn)榧t色路徑 [2,3,3] 存在回文排列 [3,2,3] ,綠色路徑 [2,1,1] 存在回文排列 [1,2,1] 。
示例 2:
輸入:root = [2,1,1,1,3,null,null,null,null,null,1] 輸出:1 解釋:上圖為給定二叉樹。總共有 3 條從根到葉子的路徑:綠色路徑 [2,1,1] ,路徑 [2,1,3,1] 和路徑 [2,1] 。這些路徑中只有綠色路徑是偽回文路徑,因?yàn)?[2,1,1] 存在回文排列 [1,2,1] 。
示例 3:
輸入:root = [9] 輸出:1
提示:
- 給定二叉樹的節(jié)點(diǎn)數(shù)目在范圍?
[1, 105]
?內(nèi) 1 <= Node.val <= 9
解答:
代碼:
/*** 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 int pseudoPalindromicPaths (TreeNode root) {int[] counter=new int[10];return dfs(root,counter);}public int dfs(TreeNode root,int[] counter){if(root==null){return 0;}counter[root.val]++;int res=0;if(root.left==null&&root.right==null){if(isPseudoPalindrome(counter)){res=1;}}else{res=dfs(root.left,counter)+dfs(root.right,counter);}counter[root.val]--;return res;}public boolean isPseudoPalindrome(int[] counter){int odd=0;for(int value:counter){if(value%2==1){odd++;}}return odd<=1;}
}