117.info
人生若只如初见

C语言二叉树遍历代码怎么写

以下是C语言中二叉树的三种遍历方式(前序遍历、中序遍历和后序遍历)的代码实现:

#include 
#include 

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

// 创建新节点
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    if(newNode == NULL) {
        printf("内存分配失败!\n");
        exit(1);
    }
    newNode->data = https://www.yisu.com/ask/data;>left = NULL;
    newNode->right = NULL;
    return newNode;
}

// 前序遍历
void preorderTraversal(Node* root) {
    if(root != NULL) {
        printf("%d ", root->data);  // 先访问根节点
        preorderTraversal(root->left);  // 再前序遍历左子树
        preorderTraversal(root->right);  // 最后前序遍历右子树
    }
}

// 中序遍历
void inorderTraversal(Node* root) {
    if(root != NULL) {
        inorderTraversal(root->left);  // 先中序遍历左子树
        printf("%d ", root->data);  // 再访问根节点
        inorderTraversal(root->right);  // 最后中序遍历右子树
    }
}

// 后序遍历
void postorderTraversal(Node* root) {
    if(root != NULL) {
        postorderTraversal(root->left);  // 先后序遍历左子树
        postorderTraversal(root->right);  // 再后序遍历右子树
        printf("%d ", root->data);  // 最后访问根节点
    }
}

int main() {
    // 创建二叉树
    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");

    return 0;
}

这段代码首先定义了一个二叉树节点的结构体 Node,其中包含数据 data、左子节点指针 left 和右子节点指针 right。接着,定义了创建新节点的函数 createNode,用于动态分配内存,并返回新节点。然后,分别实现了三种遍历方式的函数:preorderTraversal(前序遍历)、inorderTraversal(中序遍历)和 postorderTraversal(后序遍历)。最后,在 main 函数中创建了一个二叉树,并分别调用了三种遍历函数,打印出遍历结果。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe886AzsLAwFUBlQ.html

推荐文章

  • c语言文件指针如何移动

    在C语言中,文件的指针可以通过使用fseek()函数来移动到文件中的特定位置。该函数的原型如下:
    int fseek(FILE *stream, long int offset, int whence); 其...

  • C语言fseek函数有什么功能

    C语言中的fseek函数主要用于移动文件指针到指定位置的功能。它可以根据指定的偏移量和起始位置来移动文件指针。
    具体功能包括: 文件指针的定位:可以将文件...

  • c语言的index函数怎么使用

    C语言中没有内置的index函数,但是可以使用strchr函数来实现类似功能。strchr函数用于在字符串中查找特定字符的第一次出现,并返回该字符的指针。
    使用示例...

  • c语言字符串replace函数怎么用

    C语言没有内置的字符串replace函数,但可以自己编写一个函数来实现字符串替换的功能。下面是一个示例的字符串替换函数的代码:
    #include #include void rep...

  • 怎么用java正则表达式匹配字符串

    要使用Java正则表达式匹配字符串,可以按照以下步骤进行: 导入正则表达式相关的类: import java.util.regex.Matcher;
    import java.util.regex.Pattern; 创...

  • win10兼容性设置的方法是什么

    要设置Windows 10的兼容性,可以按照以下步骤进行操作: 找到想要设置兼容性的应用程序或程序的可执行文件。通常,这些文件位于计算机的“Program Files”或“Pr...

  • win11电脑一睡眠就断网怎么解决

    如果在Windows 11操作系统下,计算机在睡眠后断网,您可以尝试以下解决方法: 更新网络驱动程序:打开设备管理器,找到并展开“网络适配器”选项,右键单击您的网...

  • java多线程怎么创建及使用

    在Java中,可以通过继承Thread类或实现Runnable接口来创建多线程。 继承Thread类: public class MyThread extends Thread { public void run() { // 线程执行的...