题解 | 判断是不是完全二叉树
判断是不是完全二叉树
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,只要出现空指针后面接了一个非空,则说明某个节点为空之后,其后面又出现了非空节点,即,不满足完全二叉树的定义。
 投递福建联通等公司10个岗位
投递福建联通等公司10个岗位 查看12道真题和解析
查看12道真题和解析