二叉树(Binary Tree)是树形结构的一个重要类型,也是计算机科学中常用的一种数据结构。在二叉树中,每个节点最多只能有两棵子树,通常称为左子树和右子树,且子树有左右之分,不能随意调换
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的节点结构
typedef struct TreeNode {
int data; // 节点存储的数据
struct TreeNode *left; // 指向左子节点的指针
struct TreeNode *right; // 指向右子节点的指针
} TreeNode;
// 创建新节点的函数
TreeNode* createNode(int data) {
TreeNode *newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (!newNode) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点的函数
TreeNode* insertNode(TreeNode *root, int data) {
if (root == NULL) {
root = createNode(data);
} else if (data <= root->data) {
root->left = insertNode(root->left, data);
} else {
root->right = insertNode(root->right, data);
}
return root;
}
// 中序遍历的函数
void inorderTraversal(TreeNode *root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
}
// 主函数
int main() {
TreeNode *root = NULL; // 创建一个空树
// 插入节点
root = insertNode(root, 50);
root = insertNode(root, 30);
root = insertNode(root, 70);
root = insertNode(root, 20);
root = insertNode(root, 40);
root = insertNode(root, 60);
root = insertNode(root, 80);
// 中序遍历
printf("中序遍历二叉树: ");
inorderTraversal(root);
printf("\n");
// 释放内存等操作...
return 0;
}