层序遍历是按照从上到下、从左到右的顺序遍历一棵树。对于完全二叉树,我们可以使用队列来实现层序遍历。

具体实现步骤如下:

  1. 将根节点入队。

  2. 当队列不为空时,取出队首节点,访问该节点。

  3. 如果该节点有左子节点,则将左子节点入队。

  4. 如果该节点有右子节点,则将右子节点入队。

  5. 重复步骤2-4,直到队列为空。

代码实现如下:

void levelOrder(TreeNode* root) {
    if (root == nullptr) {
        return;
    }
    queue<TreeNode*> q;
    q.push(root);
    while (!q.empty()) {
        TreeNode* cur = q.front();
        q.pop();
        cout << cur->val << " ";
        if (cur->left != nullptr) {
            q.push(cur->left);
        }
        if (cur->right != nullptr) {
            q.push(cur->right);
        }
    }
}

时间复杂度:O(n),其中 n 是二叉树的节点数。

空间复杂度:O(n),其中 n 是二叉树的节点数。在最坏情况下,队列中会保存同层的所有节点,最多有 n/2 个节点

pta完全二叉树的层序遍历;

原文地址: https://www.cveoy.top/t/topic/cu4S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录