c语言-数据结构-二叉树-生成、遍历代码

原创 2016年09月17日 22:47:52

1. 目标

生成一个二叉树,遍历输出二叉树中的内容,并显示所在的层级。


2. 运行示例

输入如下图二叉树(前序遍历方式),不存在的子节点用空格代替。显示如下。





3. 源代码

需要的注意的是,这里利用递归的方式动态分配内存,需要用指向指针的指针(也可以利用返回指针的方式)才能工作。

#include<stdio.h>
#define title "------------------------------Life is a fight!------------------------------------"

typedef char Eletype;

typedef struct BitNode{
    struct BitNode *lt;//指向左节点
    Eletype data;//根节点的数据
    struct BitNode *rt;//指向右节点
} BitNode, *BitPtr;

/*按前序遍历方式生成二叉树
* 无子节点则用空格代替
*/
void CrtBit(BitPtr *pptr)//这里由于需要对指针的地址进行操作(用malloc),所以需要用指针的指针作为形参
{
    char c;
    scanf("%c",&c);
    if(' '==c)
    {
        *pptr=NULL;
    }
    else
    {
        *pptr=(BitPtr)malloc(sizeof(BitNode));
        (*pptr)->data=c;
        CrtBit(&(*pptr)->lt);//注意参数是指针的指针
        CrtBit(&(*pptr)->rt);
    }
}

/*打印一个节点的数据*/
void VisitBit(Eletype c, int level)
{
    printf("%d: %c\n",level, c);
}

/*遍历节点*/
void TslBit(BitPtr ptr, int level)
{
    if(ptr)
    {
        VisitBit(ptr->data, level);
        TslBit(ptr->lt, level+1);
        TslBit(ptr->rt, level+1);
    }
}

int main(void)
{
    BitPtr ptr;
    int level=1;

    printf("%s\n\n",title);
    printf("Please enter the data:\n");
    CrtBit(&ptr);
    TslBit(ptr, level);
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构 二叉树的递归算法、前序、中序、后序遍历(c语言实现)

实验目的 1、掌握二叉树的表示与实现。 2、掌握二叉树的定义、创建、遍历等基本操作的实现。 3、熟悉求二叉树深度等递归算法的设计与实现。 实验内容 问题描述:已知二叉树t,分别采用顺序存储结...
  • catkint
  • catkint
  • 2015年12月18日 23:08
  • 5530

【数据结构与算法】二叉树的层序遍历

转载请注明出处: http://blog.csdn.net/ns_code/article/details/13169703     前面有篇博客详细分析了二叉树三种遍历(前序、中序...
  • zhangxiao93
  • zhangxiao93
  • 2016年03月12日 11:08
  • 3815

数据结构二叉树的构造及遍历代码

  • 2011年06月18日 12:52
  • 2KB
  • 下载

数据结构遍历二叉树算法C语言版(附完成版实验报告)

  • 2010年06月27日 21:10
  • 219KB
  • 下载

数据结构(C语言版) 清华大学出版社 第六章树和二叉树 例题答案

  • 2014年09月06日 20:20
  • 231KB
  • 下载

C语言-数据结构-线索二叉树-生成、遍历源代码

1. 目标 按前序遍历的顺序生成一个二叉树(如下图1所示),然后按照中序遍历的顺序进行线索化,利用空余的左节点指向前驱节点,空余的右节点指向后续节点。最有利用迭代的方式将其输出。 2. 运行示例 ...
  • kuweicai
  • kuweicai
  • 2016年10月25日 23:08
  • 522

C语言数据结构——遍历二叉树

1、二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有结点,使得每个节点被访问依次且仅被访问一次。2、前序遍历: 规则是若二叉树为空,则空操作返回,否则先访问根节点,然...
  • sunshine_rebrith
  • sunshine_rebrith
  • 2017年06月04日 10:53
  • 285

数据结构 BFS层次遍历二叉树【C语言版本】

BFS层次遍历二叉树
  • lalala8866
  • lalala8866
  • 2017年07月22日 13:25
  • 266

数据结构(C语言版)--二叉树的遍历

  • 2010年10月15日 01:00
  • 370KB
  • 下载

c语言实现二叉树的前中后序遍历 递归和非递归 数据结构

  • 2014年03月23日 20:51
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c语言-数据结构-二叉树-生成、遍历代码
举报原因:
原因补充:

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