`
myway84
  • 浏览: 202954 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

c语言二叉树的建立

阅读更多
#include<stdio.h>
#include<stdlib.h>
#define CHAR 1 /*字符型1 整型 0 */

#if CHAR
 typedef char TElemType;
 TElemType Nil=' ';/*字符型以空格符为空*/
 #define form "%c" /*输入输出格式为%d*/
#else
 typedef int TElemType;
 TElemType Nil=0; /*整型以0为空*/
 #define form "%d" /*输入输出格式为%d*/
#endif

typedef struct node /*结构类型定义*/
{
  TElemType data;
  struct node *left;
  struct node *right;
}BiTNode,*BiTree;

BiTNode *initBiTree(BiTNode *bt)
{
  bt=NULL;
  return bt;
}

BiTNode *CreateBiTree(BiTNode *bt)
{/*按先序次序输入二叉树中结点的值(可为字符型或整型)*/
  TElemType ch;
  scanf(form,&ch);
 if(ch==Nil)
   bt=NULL;
 else
  {
    bt=(BiTNode*)malloc(sizeof(BiTNode));/*生成根结点*/
    if(!bt) exit(0);
    bt->data=ch;
    bt->left=CreateBiTree(bt->left);/*构造左子树*/
    bt->right=CreateBiTree(bt->right);/*构造右子树*/
  }
 return bt;
}

void PrintTree(BiTNode *bt,int i)
{/*输出二叉树*/
 if(bt!=NULL)
  {
    PrintTree(bt->right,i+5);/*递归调用右子树*/
    #if CHAR
    if(bt->data!=Nil)
      {
        printf("%*c\n",i,bt->data);/*i不输出,用来调节输出*/
      }
    #else 
    if(bt->data!=Nil)
      {
        printf("%*d\n",i,bt->data);
      }
    #endif
  PrintTree(bt->left,i+5);
  i=i-5;
  }
}
int main()
{
  int i;
  BiTree bt;
  bt=initBiTree(bt);
  #if CHAR
   printf("请先序输入二叉树(如:ab三个空格 a为根节点,b为左子树的二叉树)\n");
  #else 
   printf("请先序输入二叉树(如:1 2 0 0 0  1为根节点,2为左子树的二叉树)\n");
  #endif
  bt=CreateBiTree(bt);
  printf("输入建立的二叉树!!!\n");
  PrintTree(bt,5);
}
分享到:
评论

相关推荐

    C语言二叉树建立遍历冒泡排序快速排序等.rar

    本压缩包文件“C语言二叉树建立遍历冒泡排序快速排序等.rar”提供了这些语言的相关案例,帮助学习者深入理解数据结构和算法。以下是针对这些主题的详细解释: 1. **C语言**:C语言是一种强大的系统级编程语言,被...

    C语言二叉树的建立和遍历

    本文将详细讲解C语言中如何建立和遍历二叉树。 首先,我们需要理解二叉树的基本概念。二叉树是由n(n&gt;=0)个有限节点组成的一个有穷集合,这些节点满足以下条件: 1. 有且仅有一个特定的称为根(root)的节点。 2....

    c语言二叉树的建立和非递归的中序遍历

    利用c语言实现对二叉树的建立和非递归的中序遍历

    数据结构 C语言建立二叉树

    在这个场景中,我们将深入探讨如何使用C语言来建立、操作和可视化二叉树。 二叉树由节点构成,每个节点包含一个值以及指向其左子节点和右子节点的指针。二叉树的主要特性包括: 1. **二叉树的类型**:有完全二叉树...

    C语言二叉树创建与遍历

    C语言二叉树创建与遍历 二叉树是一种常用的数据结构,它由节点和边组成,每个节点最多有两个子节点,即左子节点和右子节点。在计算机科学中,二叉树广泛应用于各种场景,例如文件系统、数据库索引、编译器设计等。...

    C语言数据结构实现二叉树的建立与遍历.cpp

    C语言数据结构实现二叉树的建立与遍历.cpp

    c语言,二叉树,前中后,递归,非递归

    根据给定的信息,本文将详细解释二叉树的遍历方法,包括递归与非递归方式下的前序、中序、后序遍历,并简要介绍层次遍历的概念。 ### 二叉树简介 二叉树是一种常用的数据结构,其中每个节点最多有两个子节点,通常...

    C语言二叉树的前序遍历程序及实验报告

    当输入合法时,程序将根据输入的值建立二叉树,并进行前序遍历。通过递归和栈的操作,程序可以有效地遍历整个二叉树,遵循先访问根节点、再访问左子树、最后访问右子树的规则。 实验分析显示,递归是构建和遍历...

    C语言实现二叉树操作

    1. **树的建立**:在C语言中,首先需要定义一个结构体来表示二叉树节点,通常包括一个整数值(用于存储数据)、两个指向左右子节点的指针。然后,可以创建一个函数来接收输入数据并创建新节点。节点插入时,根据二叉...

    数据结构C语言二叉树实验代码

    根据提供的文件信息,我们可以总结出以下关于“数据结构C语言二叉树实验代码”的相关知识点: ### 一、二叉树的基本概念 **二叉树(Binary Tree)**是一种非线性的数据结构,在计算机科学中有着广泛的应用。二叉树中...

    c语言构建二叉树

    在C语言中构建二叉树是一项基础且重要的任务,它涉及到数据结构和算法的理解。二叉树是一种非线性数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在这个实例中,我们将学习如何用C语言创建一个...

    c语言几种常用方法对二叉树建立及遍历

    c语言几种建立,遍历方式,仅供参考,在vc++6.0环境下可以运行!

    利用c语言实现一颗二叉树的功能

    本主题将深入探讨如何使用C语言实现一个简单的二叉树,并实现其基本操作,如创建、插入、查找和删除节点。 首先,我们需要定义二叉树节点的数据结构。在C语言中,这可以通过创建一个结构体来完成: ```c typedef ...

    C语言_二叉树建立、遍历、交换子树代码

    C语言_二叉树建立、遍历、交换子树代码 本资源主要介绍了C语言中二叉树的建立、遍历和交换子树的实现代码。其中包括了二叉树的建立、前序遍历(递归和非递归)、中序遍历(递归和非递归)、后序遍历(递归和非递归...

    C语言实现二叉树的建立

    在C语言中实现二叉树,需要理解基本的指针操作和数据结构的概念。本文将详细讲解如何用C语言创建、遍历和删除二叉树。 首先,我们需要定义一个结构体来表示二叉树的节点。这个结构体通常包含一个数据域用于存储信息...

    二叉树实验报告 C语言

    - **创建二叉树**:通过输入的节点值,建立二叉树的结构。这可能涉及到动态内存分配和指针操作。 - **输出图形**:可以使用ASCII字符来模拟图形表示,例如,空格代表分支,字符代表节点。 - **计算深度**:从根节点...

    C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip

    C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例...

    c语言 二叉树应用:创建、递归非递归遍历、计算结点、分支、交换子树

    输入相应元素,用先序创建二叉树(无元素处用“#”) 递归先序遍历二叉树: 递归中序遍历二叉树: 递归后序遍历二叉树: 非递归先序遍历二叉树: 非递归中序遍历二叉树: 非递归后序遍历二叉树: 非递归中序...

    基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等

    基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 ...

Global site tag (gtag.js) - Google Analytics