c语言二叉树层序遍历递归代码
时间: 2024-11-28 14:16:34 浏览: 32
在C语言中,二叉树的层序遍历(即广度优先搜索,BFS)通常使用队列来辅助递归过程,这里是一个简单的递归版的层序遍历代码示例。假设我们有一个结构体`TreeNode`表示二叉树节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
// 创建一个空栈,并将根节点入栈
struct TreeNode *node = root;
stack<TreeNode*> s;
s.push(node);
while (!s.isEmpty()) {
// 弹出栈顶元素并访问
node = s.top();
printf("%d ", node->val); // 打印当前层的值
s.pop();
// 如果左子节点存在,入栈
if (node->left != NULL) {
s.push(node->left);
}
// 如果右子节点存在,也入栈
if (node->right != NULL) {
s.push(node->right);
}
}
}
```
这个函数首先检查根节点是否为空,然后用一个栈存储节点。当栈非空时,它会从栈顶取出节点访问其值,然后将左右子节点按顺序压入栈中。这样就能保证先访问同一层次的所有节点。
阅读全文