如何在C语言中使用结构体Node实现二叉树的创建,先序遍历,中序遍历及后序遍历
时间: 2024-11-15 15:28:19 浏览: 64
在C语言中,我们首先需要定义一个`Node`结构体,代表二叉树的结点,包括两个指针分别指向左孩子和右孩子。然后我们可以用这个结构体来构建二叉树。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
// 创建新的二叉树节点
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 先序遍历(根-左-右)
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
printf("%d ", root->val); // 访问根节点
preorderTraversal(root->left); // 再递归遍历左子树
preorderTraversal(root->right); // 最后遍历右子树
}
// 中序遍历(左-根-右)
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left); // 递归遍历左子树
printf("%d ", root->val); // 访问根节点
inorderTraversal(root->right); // 遍历右子树
}
// 后序遍历(左-右-根)
void postorderTraversal(TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left); // 递归左子树
postorderTraversal(root->right); // 递归右子树
printf("%d ", root->val); // 最后访问根节点
}
阅读全文
相关推荐



















