题解 | 判断是不是完全二叉树

判断是不是完全二叉树

https://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    vector<TreeNode*> vec;
    queue<TreeNode*> qu;
    bool isCompleteTree(TreeNode* root) {
        if(!root)
            return true;
        
        qu.push(root);
        while(!qu.empty()){
            TreeNode* temp = qu.front();
            vec.push_back(temp);
            qu.pop();
            if(!temp)
                continue;
            qu.push(temp->left);
            qu.push(temp->right);
        }

        for(int i=0; i<vec.size(); i++){
            if(vec[i]==nullptr && i+1<vec.size() && vec[i+1]!=nullptr)
                return false;
        }
        return true;
    }
};

思路:

step1:层序遍历,把空指针也记录在案;都存到vector<TreeNode*> vec里面。

step2:遍历vec,只要出现空指针后面接了一个非空,则说明某个节点为空之后,其后面又出现了非空节点,即,不满足完全二叉树的定义。

全部评论

相关推荐

09-29 15:34
已编辑
北京航空航天大学 C++
做个有文化的流氓:结果是好的,过程不重要,而且你的offer太多了
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务