思路通过树的层序遍历进行判断。结点入队时,当出现一个结点的孩子结点为空时,则之后就不能有新的结点入队。

若没有,则是完全二叉树,否则不是完全二叉树。

 

层序遍历代码:

int after = 1;//表示还有结点入队
bool isComplete = true;
void layerOrder(Node* root) {
    queue<Node*> Q;
    Q.push(root);
    while (!Q.empty()) {
        Node* front = Q.front();
        Q.pop();
        layer.push_back(front->v);

        if (front->lchild != NULL) {
            if (after == 0) isComplete = false;
            Q.push(front->lchild);
        }
        else {
            after = 0;//以后没有结点入队
        }

        if (front->rchild != NULL) {
            if (after == 0) isComplete = false;
            Q.push(front->rchild);
        }
        else {
            after = 0;
        }
    }
}

 

相关文章:

  • 2021-09-05
  • 2021-10-12
  • 2021-11-08
  • 2021-12-04
  • 2021-08-22
  • 2021-11-08
  • 2021-11-18
  • 2021-09-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-01
  • 2021-06-01
  • 2021-10-13
  • 2022-12-23
相关资源
相似解决方案