【数据结构】树的先序、中序、后序遍历

先序、中序、后续遍历概述

这里写图片描述

这里写图片描述


三种遍历的代码

// demo树的遍历.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;
struct tNode
{
    int data;
    struct tNode *lChild, *rChild;
};
typedef struct tNode tNode;
typedef struct tNode* Tree;
//先序遍历
void preOrder(tNode* root)//树的根节点
{
    if (root == NULL) return;
    printf("%d ", root->data);
    preOrder(root->lChild);
    preOrder(root->rChild);

}
//中序遍历
void inOrder(tNode* root)
{
    if (root == NULL) return;

    inOrder(root->lChild);
    printf("%d ", root->data);
    inOrder((root->rChild);
}

void postOrder(tNode* root)
{
    if (root == NULL) return;

    postOrder(root->lChild);
    postOrder(root->rChild);
    printf("%d ", root->data);
}
void main()
{
    tNode p1, p2, p3, p4, p5, p6;
    memset(&p1, 0, sizeof(tNode));
    memset(&p2, 0, sizeof(tNode));
    memset(&p3, 0, sizeof(tNode));
    memset(&p4, 0, sizeof(tNode));
    memset(&p5, 0, sizeof(tNode));
    memset(&p6, 0, sizeof(tNode));

    p1.data = 1;
    p2.data = 2;
    p3.data = 3;
    p4.data = 4;
    p5.data = 5;
    p6.data = 6;

    p1.lChild = &p2;
    p1.rChild = &p3;
    p2.lChild = &p4;
    p3.lChild = &p5;
    p3.rChild = &p6;

    printf("先序遍历:");
    preOrder(&p1);
    printf("\n");
    printf("中序遍历:");
    inOrder(&p1);
    printf("\n");
    printf("后序遍历:");
    postOrder(&p1);
    printf("\n");
    system("pause");
    return;
}

建树和运行结果如下:
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_32778575/article/details/82052596