码迷,mamicode.com
首页 > 其他好文 > 详细

1、如何判断一棵树是否是完全二叉树?

时间:2018-08-20 19:44:55      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:出现   完全二叉树   front   back   通过   如何   while   als   否则   

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

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

 

层序遍历代码:

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

 

1、如何判断一棵树是否是完全二叉树?

标签:出现   完全二叉树   front   back   通过   如何   while   als   否则   

原文地址:https://www.cnblogs.com/fuqia/p/9507535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!