本文主要是介绍leetcode 958. Check Completeness of a Binary Tree 完全二叉树的判定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://leetcode.com/problems/check-completeness-of-a-binary-tree/
层次遍历,依次将每层的所有节点压入队列,空节点也照常压入,
每次从队列中取出一个节点,若该节点为空,则队列应该为空,或者剩余节点全部为空节点。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool isCompleteTree(TreeNode* root) {if(root==nullptr) return true;queue<TreeNode*> q;q.push(root);bool miss = false;while(!q.empty()){if(miss) return false;TreeNode* tmp = q.front();q.pop();if(tmp!=nullptr){q.push(tmp->left); //如果子节点是空,将null压入q.push(tmp->right);}else{miss=true;while(!q.empty()){//当遇到一个节点是空时,队列里剩余节点必须全部是空TreeNode* tmp = q.front();q.pop();if(tmp!=nullptr) return false;}}}return true;}
};
这篇关于leetcode 958. Check Completeness of a Binary Tree 完全二叉树的判定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!