鉴于使用位掩码的解决方案,我无法理解代码中标记的条件评估

Given solution using Bitmask, I am unable to understand the evaluation of condition as marked in code

我无法理解这里使用的位掩码,给定的代码是在包含数字 0-9 的二叉树中查找没有回文路径的解决方案。我在 if 语句中标记了代码行。

这是LeetCode竞赛题。题目如上:

二叉树中的伪回文路径, 给定一棵二叉树,其中节点值是从 1 到 9 的数字。如果路径中节点值的至少一个排列是回文,则称二叉树中的路径是伪回文。

Return从根节点到叶节点的伪回文路径数

    int pseudoPalindromicPaths (TreeNode* root) {
        return dfs(root, 0);
    }

    int dfs(TreeNode* root, int count) {
        if (!root) return 0;
        count ^= 1 << (root->val - 1);
        int res = dfs(root->left, count) + dfs(root->right, count);
        if (root->left == root->right && (count & (count - 1)) == 0) res++;
        //--------------------------------------^--THIS SECTION-----
        count ^= 1 << (root->val - 1);
        return res;
    }
count & (count - 1) == 0

如果计数是 2 的幂,则此语句为真。

示例:计数 = 8

00001000 = 8
&
00000111 = (8-1) = 7 
------------
00000000 = 0