二叉树
来源:互联网 发布:使命召唤ol辅助淘宝 编辑:程序博客网 时间:2024/06/12 17:15
#include <stdio.h>#include <stdlib.h>typedef struct node * Tree;struct node{int Data;Tree Left;Tree Right;};Tree BulidTree1(Tree T)//先序创建二叉树 {int item;scanf("%d",&item);if(item==0){return NULL;}else{T=(Tree)malloc(sizeof(struct node));T->Data=item;T->Left=BulidTree1(T);T->Right=BulidTree1(T);}return T;}Tree BulidTree2(Tree T)//中序序创建二叉树 {int item;scanf("%d",&item);if(item==0){return NULL;}else{T=(Tree)malloc(sizeof(struct node));T->Left=BulidTree2(T);T->Data=item;T->Right=BulidTree2(T);}return T;}Tree BulidTree3(Tree T)//后序序创建二叉树 {int item;scanf("%d",&item);if(item==0){return NULL;}else{T=(Tree)malloc(sizeof(struct node));T->Left=BulidTree3(T);T->Right=BulidTree3(T);T->Data=item;}return T;}void print1(Tree T)//先序遍历 {if(T){ printf("%d ",T->Data); print1(T->Left); print1(T->Right);}}void print2(Tree T)//中序遍历 {if(T){ print2(T->Left); printf("%d ",T->Data); print2(T->Right);}}void print3(Tree T)//后序遍历 {if(T){ print3(T->Left); print3(T->Right); printf("%d ",T->Data);}}int highTree(Tree T)//二叉树的高度 {int HL,HR,H;if(T){HL=highTree(T->Left);HR=highTree(T->Right); H=HR>HL?HR:HL;return (H+1); }else{return 0;} }void PrintLeavece(Tree T)//输出二叉树的叶节点 {if(T){if(!T->Left&&!T->Right){printf("%d\n",T->Data);}PrintLeavece(T->Left);PrintLeavece(T->Right);}} int main(){Tree T;int N; T=BulidTree3(T); N=highTree(T); printf("H=%d\n",N); PrintLeavece(T);print1(T);return 0;}
0 0
- 二叉树、二叉堆
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 序列化和反序列化的简单理解
- 高清网络摄像机主流芯片方案之安霸、TI和海思对比
- Calendar日期时间类
- 设计模式之策略模式
- 【脚本语言系列】关于Python测试工具Pyflakes, 你需要知道的事
- 二叉树
- An Overview of the Android Architecture (Android Studio)
- Apache JMeter
- CrossDomain.xml的作用及其简单用法
- 回环接口(loop-back/loopback)
- web前端面试准备
- 前端获取后台json过程由于转义字符出现的问题
- Docker持续部署图文详解
- CVAE-GAN 网络结构