C++ 如何计算二叉树中所有节点两侧的节点数

C++ 如何计算二叉树中所有节点两侧的节点数,c++,c++17,C++,C++17,我希望解决方案适用于所有节点,而不是单个节点!我已经为每个节点应用了BFS/DFS来计算其一侧的节点,但复杂性非常高。我知道如果我能找到一边的节点,另一边的节点可以通过(n-(一边的节点))计算出来 对不起,我的英语不好 您可以通过以下方式计算单树遍历的次数: void computeCounters(Node *n) { if (n) { if (n->left) { computeCounters(n->left);

我希望解决方案适用于所有节点,而不是单个节点!我已经为每个节点应用了BFS/DFS来计算其一侧的节点,但复杂性非常高。我知道如果我能找到一边的节点,另一边的节点可以通过(n-(一边的节点))计算出来


对不起,我的英语不好

您可以通过以下方式计算单树遍历的次数:

void computeCounters(Node *n) {
    if (n) {
        if (n->left) {
            computeCounters(n->left);
            n->leftCount = 1 + n->left->leftCount + n->left->rightCount;
        } else {
            n->leftCount = 0;
        }
        if (n->right) {
            computeCounters(n->right);
            n->rightCount = 1 + n->right->leftCount + n->right->rightCount;
        } else {
            n->rightCount = 0;
        }
    }
}

非常感谢你的回答。我不知道为什么我的问题会被自动编辑。我想知道的是,假设有一个n-1边的连通图。现在,我去掉其中一条边,把图分成两部分。我计算任意一个部件中的节点数并存储它。现在,我替换边。然后,我删除另一条边并执行相同的操作。我想对所有的边做同样的事情并存储它们!如何在不应用bfs/dfs n-1次的情况下执行此操作@6502