当前位置:首页C语言 > 正文

C语言树状结构遍历

作者:野牛程序员:2023-11-24 16:46:03C语言阅读 2460

C语言中,树状结构的遍历通常可以通过递归来实现。以下是一个简单的示例代码,演示了如何遍历二叉树:

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

// 定义二叉树节点
struct Node {
    int data;
    struct Node* left;
    struct Node* right;
};

// 创建新节点
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

// 递归前序遍历
void preOrderTraversal(struct Node* root) {
    if (root != NULL) {
        printf("%d ", root->data);
        preOrderTraversal(root->left);
        preOrderTraversal(root->right);
    }
}

// 递归中序遍历
void inOrderTraversal(struct Node* root) {
    if (root != NULL) {
        inOrderTraversal(root->left);
        printf("%d ", root->data);
        inOrderTraversal(root->right);
    }
}

// 递归后序遍历
void postOrderTraversal(struct Node* root) {
    if (root != NULL) {
        postOrderTraversal(root->left);
        postOrderTraversal(root->right);
        printf("%d ", root->data);
    }
}

int main() {
    // 构建一个简单的二叉树
    struct 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");

    // 释放节点内存
    free(root->left->left);
    free(root->left->right);
    free(root->left);
    free(root->right);
    free(root);

    return 0;
}

这个例子中,通过 preOrderTraversalinOrderTraversalpostOrderTraversal 分别实现了前序、中序和后序遍历。在实际的应用中,可以根据具体的树结构和遍历需求来修改和扩展这些函数。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击