zoukankan      html  css  js  c++  java
  • 判断是否是完全二叉树

    判断一棵树是否是完全二叉树的思路 
    1>如果树为空,则直接返回错 
    2>如果树不为空:层序遍历二叉树 
    2.1>如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列; 
    2.1>如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树; 
    2.2>如果遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空;则该节点之后的队列中的结点都为叶子节点;该树才是完全二叉树,否则就不是完全二叉树;

    bool check(BiTree T) 
    {
         if (T == NULL)
            return false;
            queue<BiTree> Q;
            Q.push(T);
            while (!Q.empty()) 
            {
                 BiTree p = Q.front();
                 Q.pop();
                 if (p->left && p->right) {
                      Q.push(p->left);
                      Q.push(p->right);                            
                    }
                    else if(p->right && p-left == NULL)
                        return false;
                    else
                    {
                        if(p->left && p-right == NULL)
                            Q.push(p->left);
                        while(!Q.empty())
                        {
                            p = Q.front(); Q.pop();
                            if(p->left || p->right)
                                return false;
                        }    
             
                      }       
            }
            return true;
    }
  • 相关阅读:
    a*b高精度数组算法
    vscode plugins
    vscode keys
    vscode setting.jsonxx
    vscode settings.json
    webstorm keys
    vscode extensions
    vscode wechat settings.json
    vscode sass live compiler
    webstorm crack
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/11029636.html
Copyright © 2011-2022 走看看