pta完全二叉树的层序遍历;
层序遍历是按照从上到下、从左到右的顺序遍历一棵树。对于完全二叉树,我们可以使用队列来实现层序遍历。
具体实现步骤如下:
-
将根节点入队。
-
当队列不为空时,取出队首节点,访问该节点。
-
如果该节点有左子节点,则将左子节点入队。
-
如果该节点有右子节点,则将右子节点入队。
-
重复步骤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 个节点
原文地址: https://www.cveoy.top/t/topic/cu4S 著作权归作者所有。请勿转载和采集!