编写按层次顺序(同一层自左至右)遍历二叉树的算法。
时间: 2023-06-05 16:47:57 浏览: 123
按层次顺序遍历二叉树的算法如下:
1. 创建一个队列,将根节点入队。
2. 当队列不为空时,执行以下操作:
a. 取出队头元素,访问该节点。
b. 如果该节点有左子节点,将左子节点入队。
c. 如果该节点有右子节点,将右子节点入队。
3. 重复步骤2,直到队列为空。
这样就可以按层次顺序遍历二叉树了。
相关问题
编写按层次顺序(同一层自左至右)遍历二叉树算法
1. 创建一个队列,将根节点入队。
2. 当队列不为空时,执行以下操作:
1. 取出队首元素,并访问该节点。
2. 如果该节点有左子节点,将左子节点入队。
3. 如果该节点有右子节点,将右子节点入队。
3. 重复步骤2,直到队列为空。
Python代码实现:
```python
def level_order_traversal(root):
if not root:
return []
queue = [root]
res = []
while queue:
node = queue.pop(0)
res.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return res
```
c语言编写按层次顺序(同一层自左至右)遍历二叉树算法
首先需要定义二叉树的结构体:
```C
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
然后按照层次顺序遍历二叉树的算法如下:
```C
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
// 创建一个队列,用于存储待遍历的节点
TreeNode* queue[1000];
int head = 0;
int tail = 0;
// 将根节点加入队列
queue[tail++] = root;
// 循环遍历队列中的节点
while (head < tail) {
TreeNode* node = queue[head++];
// 输出当前节点的值
printf("%d ", node->val);
// 将当前节点的左右子节点加入队列
if (node->left != NULL) {
queue[tail++] = node->left;
}
if (node->right != NULL) {
queue[tail++] = node->right;
}
}
}
```
在上面的代码中,我们使用了一个队列来存储待遍历的节点。首先将根节点加入队列,然后循环遍历队列中的节点。对于每个节点,先输出其值,然后将其左右子节点加入队列。这样就可以按照层次顺序遍历二叉树了。
阅读全文