亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c語言如何遍歷二叉樹

小億
83
2024-09-03 06:04:17
欄目: 編程語言

在C語言中,遍歷二叉樹有多種方法,包括前序遍歷、中序遍歷和后序遍歷。這里給出一個簡單的例子來說明如何實現這三種遍歷方法。

首先,我們需要定義一個二叉樹節點的結構體:

#include<stdio.h>
#include <stdlib.h>

typedef struct TreeNode {
    int data;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

接下來,我們實現三種遍歷方法的函數:

// 前序遍歷:根節點 -> 左子樹 -> 右子樹
void preOrderTraversal(TreeNode *node) {
    if (node == NULL) {
        return;
    }

    printf("%d ", node->data);
    preOrderTraversal(node->left);
    preOrderTraversal(node->right);
}

// 中序遍歷:左子樹 -> 根節點 -> 右子樹
void inOrderTraversal(TreeNode *node) {
    if (node == NULL) {
        return;
    }

    inOrderTraversal(node->left);
    printf("%d ", node->data);
    inOrderTraversal(node->right);
}

// 后序遍歷:左子樹 -> 右子樹 -> 根節點
void postOrderTraversal(TreeNode *node) {
    if (node == NULL) {
        return;
    }

    postOrderTraversal(node->left);
    postOrderTraversal(node->right);
    printf("%d ", node->data);
}

最后,我們可以創建一個二叉樹并遍歷它:

int main() {
    TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));
    root->data = 1;
    root->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->data = 2;
    root->right->data = 3;
    root->left->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->left->data = 4;
    root->left->right->data = 5;
    root->right->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->left->data = 6;
    root->right->right->data = 7;

    printf("前序遍歷:");
    preOrderTraversal(root);
    printf("\n");

    printf("中序遍歷:");
    inOrderTraversal(root);
    printf("\n");

    printf("后序遍歷:");
    postOrderTraversal(root);
    printf("\n");

    return 0;
}

運行這個程序,你將看到以下輸出:

前序遍歷:1 2 4 5 3 6 7
中序遍歷:4 2 5 1 6 3 7
后序遍歷:4 5 2 6 7 3 1

這就是如何在C語言中遍歷二叉樹的方法。注意,這個例子中的二叉樹結構比較簡單,實際應用中的二叉樹可能會更復雜。

0
商都县| 萍乡市| 麻江县| 曲麻莱县| 孟连| 宁陵县| 民县| 平昌县| 江山市| 清涧县| 阿巴嘎旗| 潮州市| 朝阳区| 乌兰察布市| 太湖县| 鹤山市| 云阳县| 陆良县| 潼关县| 新宾| 和硕县| 玛曲县| 麻江县| 汉阴县| 吉隆县| 宁陵县| 兴城市| 潞西市| 烟台市| 彰化县| 京山县| 丘北县| 怀远县| 盈江县| 壶关县| 大渡口区| 崇礼县| 石首市| 宜州市| 体育| 绩溪县|