二叉树的非递归前序遍历c语言代码
时间: 2024-10-21 18:02:02 浏览: 23
二叉树的非递归前序遍历是指先访问根节点,然后遍历左子树,最后遍历右子树。这里是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建一个新的节点
TreeNode* createNode(int data) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 前序遍历函数
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 访问根节点
preorderTraversal(root->left); // 遍历左子树
preorderTraversal(root->right); // 遍历右子树
}
}
int main() {
// 创建示例二叉树
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
printf("前序遍历结果: ");
preorderTraversal(root);
printf("\n");
return 0;
}
```
在这个例子中,我们首先检查当前节点是否为空,如果不为空,就打印节点值,然后递归地遍历左右子树。注意,这个实现使用了栈来模拟递归过程,实际上是采用了迭代的方式。
阅读全文