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;
}



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

相关文章推荐

【数据结构和算法】【二叉树】二叉树遍历的代码实现

二叉树的顺序存储结构: 使用数组表示,将二叉树填充为完全二叉树并依次自上而下、自左至右进行编号[1-n],而后将编号为[1-n]的结点元素一一对应地存储在数组下标为[0-(n-1)]的数组元素中。 ...
  • jay_yin
  • jay_yin
  • 2014年10月27日 17:31
  • 1670

看数据结构写代码(22) 二叉树的顺序存储方式

二叉树 是 一个 节点 的度最多是2 ,并且区分 左右子树的 特殊树。 二叉树 有一些特性,这些特性 是 写 二叉树顺序表的 重要依据,所以先介绍一下: 1.k层的二叉树,最多有  2 的 k次方...

数据结构——二叉树的遍历

“树”是一种重要的数据结构,本文浅谈二叉树的遍历问题,采用C语言描述。   一、二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每个结点只有一个父结点,最多含有两个子节点,子节点有左右之分...

C++ 数据结构-------二叉树实现

最近写了一个简单的二叉树,仅供查考,代码如下: #include using namespace std; typedef char T; class bst {     str...

数据结构学习之二叉树(理论篇)

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: http://blog.csdn.net/ab198604         一、什么是树?         ...
  • ab198604
  • ab198604
  • 2013年01月16日 08:51
  • 17588

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

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C语言实现二叉树的创建以及遍历(递归)

C语言实现二叉树的创建以及遍历 #include typedef char ElemType; typedef struct BiTNode { ElemType data; st...

【算法】二叉树的递归遍历C语言实现

二叉树是一种极其重要的数据结构,以下是二叉树的结构定义 创建 和递归先序 中序 后序 遍历的代码. #include #include typedef char ElemType; /*二...
  • lchad
  • lchad
  • 2015年02月07日 18:18
  • 3556

数据结构之---C语言实现二叉树的顺序存储

数据结构之---C语言实现二叉树的顺序存储
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c语言-数据结构-二叉树-生成、遍历代码
举报原因:
原因补充:

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