一种巧妙的判断完全二叉树的方法

3 篇文章 0 订阅
1 篇文章 0 订阅

从博客https://blog.csdn.net/guoqingshuang/article/details/79825860看到的,觉得不错。

void judge() {//一种巧妙的判断完全二叉树的方法
    queue<node *> que;
    que.push(root);
    node *q;
    while(!que.empty())
    {
        q=que.front();
        que.pop();
        if(q != NULL) {
            que.push(q->lchild);
            que.push(q->rchild);
        }
        if(q == NULL)
            break;
        cnt++;
    }
}

用队列将二叉树层次遍历一遍,同时用cnt记录出队的节点的个数。如果某节点孩子为NULL也正常入队,在出队过程中如果出队了一个NULL就返回,然后看记录的cnt值是否等于树中节点总数,如果等于,说明遍历过程中没有由于入队了空节点而使遍历提前退出,即是完全二叉树(不存在某一层节点中夹杂着空节点的情况)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值