温馨提示×

c语言二叉树怎么创建与遍历

小亿
129
2024-04-01 19:38:04
栏目: 编程语言

在C语言中,可以使用结构体来表示二叉树节点,然后通过递归的方式来创建和遍历二叉树。

首先定义一个结构体表示二叉树节点:

struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; }; 

然后可以定义一个函数来创建二叉树节点:

struct TreeNode* createNode(int data) { struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } 

接着可以定义一个函数来插入节点到二叉树中:

struct TreeNode* insertNode(struct TreeNode* root, int data) { if (root == NULL) { return createNode(data); } if (data < root->data) { root->left = insertNode(root->left, data); } else { root->right = insertNode(root->right, data); } return root; } 

最后可以定义递归函数来遍历二叉树,包括前序遍历、中序遍历和后序遍历:

void preOrder(struct TreeNode* root) { if (root == NULL) return; printf("%d ", root->data); preOrder(root->left); preOrder(root->right); } void inOrder(struct TreeNode* root) { if (root == NULL) return; inOrder(root->left); printf("%d ", root->data); inOrder(root->right); } void postOrder(struct TreeNode* root) { if (root == NULL) return; postOrder(root->left); postOrder(root->right); printf("%d ", root->data); } 

使用这些函数,可以创建一个二叉树并进行遍历操作:

int main() { struct TreeNode* root = NULL; root = insertNode(root, 5); insertNode(root, 3); insertNode(root, 8); insertNode(root, 2); insertNode(root, 4); insertNode(root, 7); insertNode(root, 9); printf("Preorder traversal: "); preOrder(root); printf("\n"); printf("Inorder traversal: "); inOrder(root); printf("\n"); printf("Postorder traversal: "); postOrder(root); printf("\n"); return 0; } 

这样就可以创建一个二叉树并进行遍历操作。

0