C语言建立一棵二叉树,并实现前序、中序和后序遍历这棵二叉树。生成代码
时间: 2024-05-01 16:07:51 浏览: 109
建一棵二叉树,并分别用先序和中序遍历二叉树
4星 · 用户满意度95%
这是一个建立二叉树并实现遍历的示例代码,你可以参考一下:
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建新节点
Node* createNode(int data) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 前序遍历二叉树
void preOrderTraversal(Node* node) {
if(node == NULL) return;
printf("%d ", node->data);
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
// 中序遍历二叉树
void inOrderTraversal(Node* node) {
if(node == NULL) return;
inOrderTraversal(node->left);
printf("%d ", node->data);
inOrderTraversal(node->right);
}
// 后序遍历二叉树
void postOrderTraversal(Node* node) {
if(node == NULL) return;
postOrderTraversal(node->left);
postOrderTraversal(node->right);
printf("%d ", node->data);
}
int main() {
// 创建二叉树
Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
root->right->left = createNode(6);
root->right->right = createNode(7);
// 遍历二叉树
printf("Pre-order traversal: ");
preOrderTraversal(root);
printf("\n");
printf("In-order traversal: ");
inOrderTraversal(root);
printf("\n");
printf("Post-order traversal: ");
postOrderTraversal(root);
printf("\n");
// 释放内存
free(root->left->left);
free(root->left->right);
free(root->left);
free(root->right->left);
free(root->right->right);
free(root->right);
free(root);
return 0;
}
阅读全文