c语言树的构建和操作
在C语言中,可以使用结构体来表示树中的节点,每个节点包含一个数据元素和指向其子节点的指针。以下是一个简单的示例,演示如何构建和操作一棵二叉树:
```c
include <>
include <>
// 定义树节点结构体
struct TreeNode {
int val;
struct TreeNode left;
struct TreeNode right;
};
// 创建新节点
struct TreeNode createNode(int val) {
struct TreeNode node = (struct TreeNode)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点
struct TreeNode insertNode(struct TreeNode root, int val) {
if (root == NULL) {
return createNode(val);
} else if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}c语言中struct
return root;
}
// 中序遍历(左-根-右)
void inorderTraversal(struct TreeNode root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
}
// 先序遍历(根-左-右)
void preorderTraversal(struct TreeNode root) {
if (root != NULL) {
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
// 后序遍历(左-右-根)
void postorderTraversal(struct TreeNode root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
}
int main() {
struct TreeNode root = NULL; // 初始化空树
root = insertNode(root, 5); // 插入根节点5
root = insertNode(root, 3); // 插入节点3(左子节点)
root = insertNode(root, 7); // 插入节点7(右子节点)
root = insertNode(root, 2); // 插入节点2(左子节点3的左子节点)
root = insertNode(root, 4); // 插入节点4(左子节点3的右子节点)
root = insertNode(root, 6); // 插入节点6(右子节点3的左子节点)
root = insertNode(root, 8); // 插入节点8(右子节点3的右子节点)
printf("中序遍历结果:"); // 中序遍历结果:2 3 4 5 6 7 8 7(左-根-右)
inorderTraversal(root); printf("\n"); // 中序遍历(左-根-右)输出2 3 4 5 6 7 8 7(左-根-右)的顺序。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论