二叉树创建、遍历、深度、销毁
来源:互联网 发布:java httpclient ssl 编辑:程序博客网 时间:2024/06/05 16:43
#include "stdio.h"int g_index=0;int g_dataCount=0;typedef char DataType;typedef struct BiTNode{ DataType data; struct BinTNode *LChild,*RChild;}BiTNode,*BiTree;//创建二叉树void createBiTree(BiTree *t,DataType *treeData){ if(g_index==g_dataCount) return; DataType tmpData=treeData[g_index++]; if(tmpData=='#') *t=NULL; else { *t=(BiTree)malloc(sizeof(BiTNode)); (*t)->data=tmpData; createBiTree(&((*t)->LChild),treeData); createBiTree(&((*t)->RChild),treeData); }}//前序遍历void preOrder(BiTree t){ if(t==NULL)return; else { printf("%c ",t->data); preOrder(t->LChild); preOrder(t->RChild); }}//中序遍历void inOrder(BiTree t){ if(t==NULL)return; else { inOrder(t->LChild); printf("%c ",t->data); inOrder(t->RChild); }}//后序遍历void postOrder(BiTree t){ if(t==NULL)return; else { postOrder(t->LChild); postOrder(t->RChild); printf("%c ",t->data); }}//计算树的深度int BiTreeDepth(BiTree t){ int i,j; if(t==NULL)return 0; if(t->LChild!=NULL) i=BiTreeDepth(t->LChild); else i=0; if(t->RChild!=NULL) j=BiTreeDepth(t->RChild); else j=0; return i>j?i+1:j+1;}//destroyvoid destroyBiTree(BiTree *t){ if(*t) { if((*t)->LChild!=NULL) destroyBiTree(&((*t)->LChild)); if((*t)->RChild!=NULL) destroyBiTree(&((*t)->RChild)); free(*t); *t=NULL; }}int main(){ DataType *treeData="ABDH#K###E##CFI###G#J##"; g_dataCount=strlen(treeData); BiTree t=NULL; createBiTree(&t,treeData); //遍历方式#if 1 printf("preOrder\n"); preOrder(t); printf("\n"); printf("inOrder\n"); inOrder(t); printf("\n"); printf("postOrder\n"); postOrder(t); printf("\n");#endif printf("depth:%d\n",BiTreeDepth(t)); destroyBiTree(&t); printf("depth:%d\n",BiTreeDepth(t)); return 0;}
阅读全文
0 0
- 二叉树创建,遍历,销毁,深度.....
- 二叉树创建、遍历、深度、销毁
- 【二叉树】二叉树的创建、遍历、销毁、求树的最大深度
- 由数组创建二叉树,二叉树遍历,获取深度,销毁
- 二叉树的创建,遍历和销毁
- 二叉树创建以及遍历(j简单创建、遍历、叶子计数、深度计数、销毁)之1
- 链式二叉树的前序创建、递归前序遍历、非递归堆栈前序遍历、前序销毁以及求二叉树的深度
- /* 创建二叉树 ----> 装入数据,---->遍历---> 显示 --->销毁*/
- 二叉树(2)二叉树创建的3种方法,二叉树的递归遍历,二叉树的销毁
- 二叉树深度遍历
- 深度遍历二叉树
- 二叉树深度遍历
- 深度遍历二叉树
- 二叉树的创建、遍历、深度、叶子节点个数
- 二叉树的创建、遍历、深度、叶子节点数
- 二叉树创建、遍历、求深度--C语言实现
- 二叉树创建,遍历,求深度详解(递归方法)
- C语言二叉树创建、遍历、深度、叶子节点
- 【整理】Word OpenXML常用标签
- SOA、SOAP、RPC、REST、DUBBO的区别与联系
- Spring Boot Jpa 常用操作语句
- 进程池线程池
- Hibernate-validator校验框架使用教程
- 二叉树创建、遍历、深度、销毁
- 使用JNI做打卡器简单SDK
- 蓝桥杯 历届试题 回文数字 (Java解题)
- 安卓启动activity的方式(显式和隐式)
- 加一乘二平方
- android-开发一个小项目
- HUD2222(ac自动机)
- C#-WinForm跨线程修改UI界面
- 获取文件的MD5