1. 层序遍历的概念
层序遍历是指从根节点开始,按照从上到下、从左到右的顺序遍历二叉树的每个节点。层序遍历可以用队列来实现。
2. 二叉树层序遍历的算法实现
(1)将根节点入队;
(2)当队列不为空时,循环执行以下操作
1. 出队队首元素,访问该节点;
2. 如果该节点有左子节点,将左子节点入队;
3. 如果该节点有右子节点,将右子节点入队。
(3)遍历结束。
3. 二叉树层序遍历的代码实现
下面是C语言实现二叉树层序遍历的代码
typedef struct TreeNode {t val;
struct TreeNode left;
struct TreeNode right;
} TreeNode;
typedef struct ueueNode {
TreeNode treeNode;ext;
} ueueNode;
typedef struct ueue {
ueueNode head;
ueueNode tail;
} ueue;
queue(ueue queue, TreeNode treeNode) {alloc(sizeof(ueueNode));
queueNode->treeNode = treeNode;ext = NULL;
if (queue->head == NULL) {
queue->head = queueNode;
} else {ext = queueNode;
}
queue->tail = queueNode;
TreeNode dequeue(ueue queue) {
TreeNode treeNode = queue->head->treeNode;p = queue->head;ext;
if (queue->head == NULL) {
queue->tail = NULL;
}p); treeNode;
void levelOrder(TreeNode root) {
if (root == NULL) {;
}alloc(sizeof(ueue));
queue->head = NULL;
queue->tail = NULL;queue(queue, root);
while (queue->head != NULL) {
TreeNode treeNode = dequeue(queue);tf(“%d “, treeNode->val);
if (treeNode->left != NULL) {queue(queue, treeNode->left);
}
if (treeNode->right != NULL) {queue(queue, treeNode->right);
}
}
4. 总结
二叉树层序遍历是一种常用的遍历方式,可以用来遍历二叉树的每一层节点。其算法实现利用了队列的数据结构,可以通过代码实现。