首页 > 试题广场 >

二叉树采用二叉链表存储结构,设计算法,判断二叉树是否为完全二

[问答题]

二叉树采用二叉链表存储结构,设计算法,判断二叉树是否为完全二叉树。叙述算法思想并给出算法实现。

#include "stdafx.h"
#include <iostream>
// 判断二叉树是否是完全二叉树.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <queue>
using namespace std;
struct Node
{
    Node* rchild;
    Node* lchild;
    int data;
};

bool IsBinary = true;
//iscompleteBT
void Judge(Node* root)
{
    if (root == nullptr)
    {
        IsBinary = true;
        return;
    }
    queue<Node*> que;
    que.push(root);
    bool Ishave=true;
    while (!que.empty())
    {
        Node* head = que.front();
        que.pop();
        if (head->lchild == nullptr)
        {
            Ishave = false;
        }
        else
            if (head->lchild != nullptr)
            {
                if (Ishave == false)
                    IsBinary = false;
                else
                    que.push(head->lchild);
            }
            else
                if (head->rchild != nullptr)
                {
                    if (Ishave == false)
                    {
                        IsBinary = false;
                    }
                    else
                        que.push(head->rchild);
                }
                else
                {
                    if (head->rchild == nullptr)
                    {
                        Ishave = false;
                    }
                }
    }
       
}
int main()
{
    return 0;
}


发表于 2016-12-23 09:03:17 回复(0)