2023-11-25每日一题
一、题目编号
1457.二叉树中的伪回文路径
二、题目链接
点击跳转到题目位置
三、题目描述
给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。
请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。
示例 1:
示例 2:
示例 3:
提示:
- 给定二叉树的节点数目在范围 [1, 105] 内
- 1 <= Node.val <= 9
四、解题代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {bool judge(int hash[]){int num1=0;for(int i = 0; i < 10; ++i){if(hash[i]&1){num1++;}}if(num1 > 1){return false;}return true;} int hash[10];int ret=0;void dfs(TreeNode* root){if(root == nullptr){return;}if(root->left == nullptr && root->right == nullptr){hash[root->val]++;if(judge(hash) == true){ret++;}hash[root->val]--;return;}hash[root->val]++;dfs(root->left);dfs(root->right);hash[root->val]--;return;}public:int pseudoPalindromicPaths (TreeNode* root) {memset(hash,0,sizeof(hash));dfs(root);return ret;}
};
五、解题思路
(1) 哈希表,用深度优先搜索+哈希表来判断。