二叉树的基本操作(源代码)

#include "stdio.h"

#include "malloc.h"

#define MAX 100

typedef struct node{

int date;

struct node *lchild,*rchild;

}bitnode,*bitree;

bitree createbitree(bitree bt){

int m;

printf("m=");

scanf("%d",&m);

if(m==-1)

bt=NULL;

else{

bt=(bitnode *)malloc(sizeof(bitnode));

bt->date=m;

bt->lchild=createbitree(bt->lchild);

bt->rchild=createbitree(bt->rchild);

}

return bt;

}//树的建立

void leveltraverse(bitree bt){

bitree queue[MAX],p=bt;

int rear=0,front=0;

if(p!=NULL){

queue[++rear]=p;

while(frontdate);

if(p->lchild!=NULL)

queue[++rear]=p->lchild;

if(p->rchild!=NULL)

queue[++rear]=p->rchild;

}

}

}//树的层次遍历

void preordertraverse(bitree bt){

if(bt!=NULL){

printf("%d\t",bt->date);

preordertraverse(bt->lchild);

preordertraverse(bt->rchild);

}

}//树的先序遍历

void inordertraverse(bitree bt){

if(bt!=NULL){

inordertraverse(bt->lchild);

printf("%d\t",bt->date);

inordertraverse(bt->rchild);

}

}//树的中序遍历

void postordertraverse(bitree bt){

if(bt!=NULL){

postordertraverse(bt->lchild);

postordertraverse(bt->rchild);

printf("%d\t",bt->date);

}

}//树的后序遍历

int bitreedepth(bitree bt){

int h,lh,rh;

if(bt==NULL)

h=0;

else{

lh=bitreedepth(bt->lchild);

rh=bitreedepth(bt->rchild);

if(lh>=rh)

h=lh+1;

else

h=rh+1;

}

return h;

}//求树的深度

int bitreeleaf(bitree bt){

int m=0;

if(!bt)

return 0;

else if(bt->lchild==NULL&&bt->rchild==NULL)

return 1;

m+=bitreeleaf(bt->lchild)+bitreeleaf(bt->rchild);

return m;

}//求树的叶子树

int countbitreenode(bitree bt){

if(!bt)

return 0;

else

return countbitreenode(bt->lchild)+countbitreenode(bt->rchild)+1;

}//求树的节点数

void OperateBitree(bitree bt){

printf("\n");

printf("The level traversal of the bitree is:\n\t");

leveltraverse(bt);

printf("\n\n");

printf("The preorder traversal of the bitree is:\n\t");

preordertraverse(bt);

printf("\n\n");

printf("The inorder traversal of the bitree is:\n\t");

inordertraverse(bt);

printf("\n\n");

printf("The postorder traversal of the bitree is:\n\t");

postordertraverse(bt);

printf("\n\n");

printf("The number of the bitreenode is %d.\n",countbitreenode(bt));

printf("The depth of the bitree is %d.\n",bitreedepth(bt));

printf("The number of the leaves of the bitree is %d.\n\n",bitreeleaf(bt));

}//树的基本操作

void main(){

bitree bt;

bt=createbitree(bt);

OperateBitree(bt);

}

树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)相关推荐

  1. C语言二叉树的基本操作(超全)

    二叉树作为数据结构其实是一个挺有意思的结构,可以有多种应用 我们直接来看一下二叉树的代码: #include<stdlib.h> #include<stdio.h> #incl ...

  2. c语言二叉树图形输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void TranslevelPrint(Bitree bt) { struct node { Bitree vec[MAXLEN]; //存放树结点 i ...

  3. C语言二叉树字符统计,C语言实现二叉树-利用二叉树统计单词数目

    昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...

  4. c语言二叉树的生成,C语言实现二叉树的创建以及遍历(递归)

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

  5. C语言二叉树前序遍历(附完整源码)

    C语言二叉树前序遍历 C语言二叉树前序遍历完整源码(定义,实现,main函数测试) C语言二叉树前序遍历完整源码(定义,实现,main函数测试) #include <iostream>st ...

  6. 数据结构实验报告,二叉树的基本操作(C语言)

    数据结构实验报告,二叉树的基本操作(C语言) 作者:命运之光 专栏:数据结构 目录 数据结构实验报告,二叉树的基本操作(C语言) 实验六 二叉树的基本操作 一.需求分析 二.概要设计 三.详细设计 四 ...

  7. 二叉树的基本操作(c语言)

    二叉树的基本操作 创建二叉树 二叉树的叶子节点 二叉树的节点总数 二叉树的高度 二叉树的基本遍历方法 创建二叉树 代码: // 创建二叉树,使用# void createBiTree(BiTree&a ...

  8. 实现二叉树的基本操作(Java版)

    近期研究了一下二叉树,试着用Java语言实现了二叉树的基本操作,下面分享一下实现代码: package com.sf.test;import java.util.ArrayDeque; import ...

  9. [ 数据结构-C语言 ] 二叉树--初阶 大总结~~

    今天要和大家一起步入一个新的数据结构--二叉树.在学习了解二叉树之前我们先来了解什么是树. 以下是本篇的主要内容及目录 目录 1.树的概念及其结构 1.1树的概念 1.2树的相关概念(重点*) 1.3 ...

最新文章

  1. java控制台输入的数据存放在数据库表中_JDBC完成修改(使用控制台输入)
  2. VMWare ubuntu虚拟机异常关闭打开报错:该虚拟机似乎正在使用中(下班虚拟机最好关闭,免得又异常关闭导致问题)(千万别在虚拟机下win+L锁屏,解锁后就打不开虚拟机了)
  3. 7-9 输出大写英文字母 (15 分)
  4. 用keil编译的时候遇到不能编译也不能build
  5. kettle 下载安装 使用
  6. vue + ElementUI如何动态删除表格当前行内容
  7. Android页面引导蒙版(浮层)库
  8. 密码编码学与网络安全(第五版)答案
  9. html css下拉菜单居中,css如何设置下拉菜单?
  10. MyBatis详解(一):入门程序
  11. c语言rand生成1 100随机数,c语言生成1~100随机数
  12. 如何判断用户是否关注微信订阅号,亲测实战步骤
  13. 深度长文:我对CQRS/EventSourcing架构的思考
  14. XDOJ 综合题 数字分解排序
  15. RatingBar基本使用
  16. 解决CSS中display: inline-block有缝隙问题
  17. ucos+ucgui(2)
  18. Oracle存储过程书写规范和技巧
  19. 中国黑客传说:周景平——我是超级黑
  20. 操作系统 | PV操作练习题汇总(一)

热门文章

  1. android程序更改pdf文件格式,Android根据pdf模板生成pdf文件
  2. RestTemplate发送请求并携带header信息
  3. matlab knnsearchidx,matlab查找最临近搜索knnsearch
  4. RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
  5. python 在线预览文件_用Python PyQt写一个在线预览图片的GUI
  6. html json to table,javascript - HTML - Convert json to table - Stack Overflow
  7. mysql port range_MySQL 数据库常见调优方法及参数设置_MySQL
  8. ubuntu下安装jdk
  9. 五个案例简述Web设计原则:通用一致
  10. 互联网的发展背离了其初衷吗?