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

溫馨提示×

C語言二叉樹遍歷代碼怎么寫

小億
83
2023-12-15 18:11:50
欄目: 編程語言

以下是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));
    if(newNode == NULL) {
        printf("內存分配失敗!\n");
        exit(1);
    }
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

// 前序遍歷
void preorderTraversal(Node* root) {
    if(root != NULL) {
        printf("%d ", root->data);  // 先訪問根節點
        preorderTraversal(root->left);  // 再前序遍歷左子樹
        preorderTraversal(root->right);  // 最后前序遍歷右子樹
    }
}

// 中序遍歷
void inorderTraversal(Node* root) {
    if(root != NULL) {
        inorderTraversal(root->left);  // 先中序遍歷左子樹
        printf("%d ", root->data);  // 再訪問根節點
        inorderTraversal(root->right);  // 最后中序遍歷右子樹
    }
}

// 后序遍歷
void postorderTraversal(Node* root) {
    if(root != NULL) {
        postorderTraversal(root->left);  // 先后序遍歷左子樹
        postorderTraversal(root->right);  // 再后序遍歷右子樹
        printf("%d ", root->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);

    // 前序遍歷二叉樹
    printf("前序遍歷:");
    preorderTraversal(root);
    printf("\n");

    // 中序遍歷二叉樹
    printf("中序遍歷:");
    inorderTraversal(root);
    printf("\n");

    // 后序遍歷二叉樹
    printf("后序遍歷:");
    postorderTraversal(root);
    printf("\n");

    return 0;
}

這段代碼首先定義了一個二叉樹節點的結構體 Node,其中包含數據 data、左子節點指針 left 和右子節點指針 right。接著,定義了創建新節點的函數 createNode,用于動態分配內存,并返回新節點。然后,分別實現了三種遍歷方式的函數:preorderTraversal(前序遍歷)、inorderTraversal(中序遍歷)和 postorderTraversal(后序遍歷)。最后,在 main 函數中創建了一個二叉樹,并分別調用了三種遍歷函數,打印出遍歷結果。

0
封开县| 平陆县| 塔河县| 阿城市| 海安县| 栾川县| 嫩江县| 沭阳县| 五常市| 石林| 夹江县| 南阳市| 大名县| 治多县| 南岸区| 隆化县| 苍山县| 和田市| 太仆寺旗| 瓮安县| 新竹县| 金湖县| 广安市| 承德市| 长春市| 渑池县| 上蔡县| 潮州市| 楚雄市| 军事| 秀山| 游戏| 昂仁县| 康马县| 阳新县| 丰顺县| 莱阳市| 龙江县| 邢台市| 万宁市| 瓦房店市|