91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C語言遞歸生成二叉樹怎么實現

小億
93
2024-02-19 15:38:33
欄目: 編程語言

在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 來輸出生成的二叉樹。

你可以運行這段代碼,按照提示輸入節點的值來生成一個二叉樹,并輸出前序遍歷的結果。

0
昂仁县| 都匀市| 崇仁县| 东港市| 大悟县| 卢氏县| 通化市| 淄博市| 芜湖县| 科尔| 滦南县| 共和县| 甘南县| 崇义县| 浠水县| 高平市| 西林县| 漳州市| 昂仁县| 南安市| 九寨沟县| 临海市| 天津市| 阳东县| 台安县| 安溪县| 镶黄旗| 泉州市| 磐石市| 运城市| 抚顺市| 清水河县| 延边| 正安县| 上犹县| 衡水市| 石屏县| 景德镇市| 山阳县| 兰溪市| 孟连|