二叉树的前中后三种遍历顺序

写在前面

二叉树的三种遍历是数据结构与算法必须要回的知识,很多人光会理论而不懂代码的实现,或者自己很难亲自实现代码的编写。那么就需要好好思考为什么自己实现不了,是递归没写好还是对语言的不熟悉又或者是其他的原因呢?

三种遍历的简单概述

书上说的很清楚二叉树的遍历是如何实现的,那么我在这里就简单的说一下二叉树的先序遍历。先序遍历其实就是每次先访问一棵树的根节点,再接着访问根节点的左子树,再访问根节点的右子树,依次递归下去,每棵子树也有根节点和左右子树…

简答例题(请先手写出答案再看代码的具体实现)

在这里插入图片描述

代码的具体实现(C语言)

#include <iostream>
using namespace std;

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

//先序遍历
void preorder(Node* node)
{
    if(node != NULL)
    {
        printf("%d ",node->data);
        preorder(node->left);
        preorder(node->right);
    }
}

//中序遍历
void inorder(Node* node)
{
    if(node != NULL)
    {
        inorder(node->left);
        printf("%d ",node->data);
        inorder(node->right);
    }
}

//后序遍历
void postorder(Node* node)
{
    if(node!= NULL)
    {
        postorder(node->left);
        postorder(node->right);
        printf("%d ",node->data);
    }
}

int main()
{
    Node n1,n2,n3,n4;
    n1.data=5;
    n1.left=&n2;
    n1.right=&n3;


    n2.data=7;
    n2.left=NULL;
    n2.right=NULL;

    n3.data=2;
    n3.left=&n4;
    n3.right=NULL;

    n4.data=9;
    n4.left=NULL;
    n4.right=NULL;

    printf("先序遍历为:");
    preorder(&n1);
    printf("\n");


    printf("中序遍历为:");
    inorder(&n1);
    printf("\n");

    printf("后序遍历为:");
    postorder(&n1);
    printf("\n");

    return 0;
}

例题答案

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值