二叉樹是一種常見的數據結構,其層序遍歷是一種廣度優先的遍歷方式,可以用來遍歷二叉樹的每一層節點。本文將詳細介紹二叉樹層序遍歷的算法。
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. 總結
二叉樹層序遍歷是一種常用的遍歷方式,可以用來遍歷二叉樹的每一層節點。其算法實現利用了隊列的數據結構,可以通過代碼實現。