中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言二叉樹怎么創建與遍歷

小億
83
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
尉犁县| 博白县| 都昌县| 高州市| 简阳市| 商水县| 灌云县| 阿瓦提县| 始兴县| 左云县| 达拉特旗| 会理县| 东港市| 共和县| 和龙市| 西乡县| 怀远县| 溆浦县| 重庆市| 孝昌县| 阳江市| 蒙自县| 米泉市| 葵青区| 金昌市| 永登县| 六枝特区| 贵阳市| 柘城县| 老河口市| 台州市| 芜湖县| 绵阳市| 巴彦淖尔市| 来宾市| 余干县| 拜城县| 建平县| 兴国县| 长宁县| 延川县|