大连的网站建设,字幕组 主页 wordpress,wordpress自动标签页,免费网站app代码给你一棵二叉树#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的#xff0c;当它满足#xff1a;路径经过的所有节点值的排列中#xff0c;存在一个回文序列。
请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 给定二叉树的节点数目…给你一棵二叉树每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的当它满足路径经过的所有节点值的排列中存在一个回文序列。
请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 给定二叉树的节点数目在范围 [1, 105] 内1 Node.val 9
观察伪回文路径的特点发现伪回文路径最多有1个奇数次数的数其他数出现的次数都是偶数。
因为node.val的值小于10。
所以可以使用一个大小为10的数组来记录每个值出现的次数。
在遍历的时候维护这个数组即可。
/*** 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 {
public:int cnt0;int map[10];bool judge(){int flag0;for(int i0;i10;i){if(map[i]%2!0)flag;}return flag1;}void dfs(TreeNode *root){if(rootNULL)return;if(root-leftNULLroot-rightNULL){map[root-val];if(judge())cnt;map[root-val]--;return;}map[root-val];dfs(root-left);dfs(root-right);map[root-val]--;}int pseudoPalindromicPaths (TreeNode* root) {dfs(root);return cnt;}
};
注意回溯法在dfs中的应用。