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

溫馨提示×

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
淮滨县| 绥江县| 镇巴县| 慈溪市| 三亚市| 房产| 瓮安县| 祁连县| 泸水县| 吴川市| 新沂市| 正阳县| 武清区| 合江县| 河间市| 高州市| 新竹市| 郯城县| 兴业县| 聂拉木县| 亳州市| 稻城县| 双流县| 甘德县| 商南县| 开远市| 津南区| 建湖县| 象山县| 壶关县| 承德市| 黄大仙区| 元氏县| 麟游县| 钟山县| 珠海市| 沅陵县| 司法| 雷波县| 淮北市| 安西县|