生活会辜负努力的人,但不会辜负一直努力的人

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

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

 

层序遍历代码:

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;
        }
    }
}

 

posted on 2018-08-20 19:26  何许亻也  阅读(471)  评论(0编辑  收藏  举报