完全二叉树判断 层次遍历

来源:互联网 发布:阿里云对个人有什么用 编辑:程序博客网 时间:2024/05/20 12:48

有一棵二叉树,请设计一个算法判断它是否是完全二叉树。

给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class CheckCompletion {public:    bool chk(TreeNode* root) {        queue<TreeNode*> qu;//处理数据队列        qu.push(root);        TreeNode* temp = root;        while(!qu.empty()){            TreeNode* cur = qu.front();//队头节点            qu.pop();            if(cur->left){                qu.push(cur->left);                temp = cur->left;            }            if(cur->right){                qu.push(cur->right);                temp = cur->right;                if(cur->left == NULL)  return false;//结点有右孩子但没有左孩子,返回false                            }            if(cur == temp){                if(cur->left || cur->right) return false;            }        }        return true;    }};