cppclass Solution {
public:
int pseudoPalindromicPaths(TreeNode* root) {
return dfs(root, 0);
}
private:
int dfs(TreeNode* node, int count) {
if (!node) {
return 0;
}
// 更新当前节点值的出现次数
count ^= (1 << (node->val - 1));
// 如果是叶子节点,判断路径是否伪回文
if (!node->left && !node->right) {
// 如果二进制表示中最多只有一个 1,则是伪回文路径
return (count & (count - 1)) == 0;
}
// 非叶子节点,递归计算左右子树
return dfs(node->left, count) + dfs(node->right, count);
}
};
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!