在C語言中,可以通過結構體和遞歸函數來實現二叉樹的生成。下面是一個簡單的示例代碼:
#include <stdio.h>
#include <stdlib.h>
// 定義二叉樹的節點結構體
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 創建新節點
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 遞歸生成二叉樹
Node* createBinaryTree() {
int data;
Node* root = NULL;
printf("輸入節點的值(-1表示空節點):");
scanf("%d", &data);
if (data == -1) {
return NULL;
}
root = createNode(data);
printf("輸入%d的左子節點:\n", data);
root->left = createBinaryTree();
printf("輸入%d的右子節點:\n", data);
root->right = createBinaryTree();
return root;
}
// 測試函數
void preorderTraversal(Node* root) {
if (root != NULL) {
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
int main() {
Node* root = createBinaryTree();
printf("前序遍歷結果:\n");
preorderTraversal(root);
return 0;
}
在上面的代碼中,我們首先定義了節點結構體 Node
,然后定義了一個用于創建新節點的函數 createNode
。接著使用遞歸函數 createBinaryTree
來生成二叉樹,用戶可以輸入節點的值,-1表示空節點。最后通過前序遍歷函數 preorderTraversal
來輸出生成的二叉樹。
你可以運行這段代碼,按照提示輸入節點的值來生成一個二叉樹,并輸出前序遍歷的結果。