第十周--数据结构--二叉树遍历的递归算法

原创 2015年11月19日 21:49:47

/*
  *第十周--数据结构--二叉树遍历的递归算法

  *Copyright (c) 2015 烟台大学计算机与控制工程学院
  *All right reserved.
  *文件名称:tree.cpp
  *writer:罗海员
  *date:2015年11月18日
  *版本:V1.0.1
  *操作系统:windows 8
  *运行环境:VC6.0
  * 问题描述:
  * 程序输出: 
*/

#include <stdio.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
    ElemType data;              //数据元素
    struct node *lchild;        //指向左孩子
    struct node *rchild;        //指向右孩子
} BTNode;
void CreateBTNode(BTNode *&b,char *str);        //由str串创建二叉链
BTNode *FindNode(BTNode *b,ElemType x);     //返回data域为x的节点指针
BTNode *LchildNode(BTNode *p);  //返回*p节点的左孩子节点指针
BTNode *RchildNode(BTNode *p);  //返回*p节点的右孩子节点指针
int BTNodeDepth(BTNode *b); //求二叉树b的深度
void DispBTNode(BTNode *b); //以括号表示法输出二叉树
void DestroyBTNode(BTNode *&b);  //销毁二叉树

void PreOrder(BTNode *b);
void InOrder(BTNode *b);
void PostOrder(BTNode *b);

void PreOrder(BTNode *b)        //先序遍历的递归算法
{
    if (b!=NULL)
    {
        printf("%c ",b->data);  //访问根节点
        PreOrder(b->lchild);    //递归访问左子树
        PreOrder(b->rchild);    //递归访问右子树
    }
}

void InOrder(BTNode *b)         //中序遍历的递归算法
{
    if (b!=NULL)
    {
        InOrder(b->lchild);     //递归访问左子树
        printf("%c ",b->data);  //访问根节点
        InOrder(b->rchild);     //递归访问右子树
    }
}

void PostOrder(BTNode *b)       //后序遍历的递归算法
{
    if (b!=NULL)
    {
        PostOrder(b->lchild);   //递归访问左子树
        PostOrder(b->rchild);   //递归访问右子树
        printf("%c ",b->data);  //访问根节点
    }
}

int main()
{
    BTNode *b;
    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
    printf("二叉树b:");
    DispBTNode(b);
    printf("\n");
    printf("先序遍历序列:\n");
    PreOrder(b);
    printf("\n");
    printf("中序遍历序列:\n");
    InOrder(b);
    printf("\n");
    printf("后序遍历序列:\n");
    PostOrder(b);
    printf("\n");
    DestroyBTNode(b);
    return 0;
}

相关文章推荐

数据结构----二叉树遍历的非递归算法实现

#include   #include   #include      #define OK 0;   #define ERROR -1   #define OVERFLOW -2 ...
  • hegq1
  • hegq1
  • 2012年11月28日 22:43
  • 340

数据结构例程——二叉树遍历的递归算法

本文是数据结构基础系列(6):树和二叉树中第10课时二叉树的遍历的例程。【二叉树遍历的递归算法】   实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))...

数据结构例程——二叉树遍历的非递归算法

本文是数据结构基础系列(6):树和二叉树中第11课时二叉树遍历非递归算法的例程。【二叉树遍历的非递归算法】 实现二叉树的先序、中序、后序遍历的非递归算法,并对用”A(B(D,E(H(J,K(L,M(...

【数据结构与算法】十五 二叉树遍历 DFS 深度优先 递归算法

【数据结构与算法】十六 二叉树遍历

第十周项目2-二叉树遍历的递归算法

/*   Copyright (c)2016,烟台大学计算机与控制工程学院   All rights reserved.   文件名称:第十周项目2 - 二叉树遍历的递归算法.cpp   作 ...

第十周项目2 二叉树遍历的递归算法

问题代码: /*问题及代码 *Copyright(c)2016,烟台大学计算机学院 *All right reserved. *文件名称:ll .cpp *作者:李玲 *完成日期...

【第十周项目2 - 二叉树遍历的递归算法】

问题及代码: /* * Copyright (c) 2016, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:Cube007.cpp * 作 ...

第十周实践项目2--二叉树遍历的递归算法

代码:  1.头文件:btree.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED...
  • TonyABu
  • TonyABu
  • 2015年11月13日 08:22
  • 242

第十周【项目二-二叉树遍历的递归算法】

问题描述及代码: /* *烟台大学计控学院 *作 者:边朔 *完成日期:2016年11月3日 *问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E...

第十周项目2---二叉树遍历的递归算法

/*     *烟台大学计控学院      *作    者:邹晓琳    *完成日期:2016年10月29日 *问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十周--数据结构--二叉树遍历的递归算法
举报原因:
原因补充:

(最多只允许输入30个字)