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

判断是不是完全二叉树

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

方法:BFS,辅助队列

本质是广度优先搜索,利用辅助队列进行层序遍历。

如果一个二叉树是完全二叉树,那么层序遍历时,第一个空结点也是它的最后一个空结点;否则就不是完全二叉树。

时间复杂度:o(n)。最坏情况需要遍历二叉树的所有结点。

空间复杂度:o(n)。需要辅助队列进行二叉树的层序遍历

class Solution {
  public:
    queue<TreeNode*> res;
    bool isCompleteTree(TreeNode* root) {
        if (root == nullptr)
            return true;
        res.push(root);
        //层间遍历第一个结点为空的标志
        bool flag = false;
        while (!res.empty()) {
            int length = res.size();
            for (int i = 0; i < length; i++) {
                TreeNode* cur = res.front();
                if (cur == nullptr) {
                    flag = true;
                } else {
                    //如果第一个空节点后还有不为空的节点,则不是完全二叉树
                    if (flag == true)
                        return false;
                    res.push(res.front()->left);
                    res.push(res.front()->right);
                }
                res.pop();
            }
        }
        return true;
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

许愿ssp的咸鱼很不想泡池子:import python as pyhton
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务