C语言实现二叉树的创建与遍历

二叉树是一种常见的数据结构,C语言中可以用结构体和指针的方式来实现二叉树。具体实现如下:

#include 
#include 

// 定义二叉树结点类型
typedef struct TreeNode {
    int data;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

// 创建二叉树
TreeNode* createBinaryTree() {
    int data;
    scanf("%d", &data);
    if (data == -1) { // -1表示空结点
        return NULL;
    } else {
        // 新建一个结点
        TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
        node->data = data;
        // 递归创建左子树和右子树
        node->left = createBinaryTree();
        node->right = createBinaryTree();
        return node;
    }
}

// 先序遍历
void preorderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    printf("%d ", root->data);
    preorderTraversal(root->left);
    preorderTraversal(root->right);
}

// 中序遍历
void inorderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    inorderTraversal(root->left);
    printf("%d ", root->data);
    inorderTraversal(root->right);
}

// 后序遍历
void postorderTraversal(TreeNode* root) {
    if (root == NULL) {
        return;
    }
    postorderTraversal(root->left);
    postorderTraversal(root->right);
    printf("%d ", root->data);
}

int main() {
    TreeNode* root = createBinaryTree();
    printf("先序遍历:");
    preorderTraversal(root);
    printf("\n中序遍历:");
    inorderTraversal(root);
    printf("\n后序遍历:");
    postorderTraversal(root);
    printf("\n");
    return 0;
}

在上述代码中,createBinaryTree函数用于创建二叉树,输入-1表示空结点,程序会递归新建左子树和右子树。分别定义了先序遍历、中序遍历和后序遍历三个函数,用于遍历二叉树。在主函数中,先创建二叉树,再进行三种遍历操作。

你可能感兴趣的:(编程算法,c语言,数据结构,算法)