在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;
}
這樣就可以創建一個二叉樹并進行遍歷操作。