C语言以二叉链表表示二叉树,建立一棵二叉树
时间: 2024-01-23 22:41:03 浏览: 87
好的,以下是一个简单的示例代码,它使用二叉链表来表示二叉树,并实现了创建二叉树、先序遍历、中序遍历、后序遍历等操作。
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点结构体
typedef struct TreeNode {
int val; // 结点值
struct TreeNode *left; // 左子结点指针
struct TreeNode *right; // 右子结点指针
} TreeNode;
// 创建新结点
TreeNode* new_node(int val) {
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 创建二叉树
TreeNode* create_tree() {
TreeNode *root = new_node(1);
root->left = new_node(2);
root->right = new_node(3);
root->left->left = new_node(4);
root->left->right = new_node(5);
root->right->left = new_node(6);
root->right->right = new_node(7);
return root;
}
// 先序遍历
void preorder_traversal(TreeNode* root) {
if (root) {
printf("%d ", root->val);
preorder_traversal(root->left);
preorder_traversal(root->right);
}
}
// 中序遍历
void inorder_traversal(TreeNode* root) {
if (root) {
inorder_traversal(root->left);
printf("%d ", root->val);
inorder_traversal(root->right);
}
}
// 后序遍历
void postorder_traversal(TreeNode* root) {
if (root) {
postorder_traversal(root->left);
postorder_traversal(root->right);
printf("%d ", root->val);
}
}
int main() {
TreeNode* root = create_tree();
printf("先序遍历结果:");
preorder_traversal(root);
printf("\n中序遍历结果:");
inorder_traversal(root);
printf("\n后序遍历结果:");
postorder_traversal(root);
printf("\n");
return 0;
}
```
这里我们创建了一棵二叉树,并对其进行了先序、中序、后序遍历。输出结果如下:
```
先序遍历结果:1 2 4 5 3 6 7
中序遍历结果:4 2 5 1 6 3 7
后序遍历结果:4 5 2 6 7 3 1
```
阅读全文