二叉树编程模型
2015-11-11 09:08
281 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _bitree
{
char data;
struct _bitree *lchild,*rchild;
}*BiTree,BiTNode;
BiTree bitree_create(BiTree tree);
void prev_display(BiTree tree);
void midl_display(BiTree tree);
void last_display(BiTree tree);
//建立二叉树
BiTree bitree_create(BiTree tree)
{
char ch = getchar();
if(ch == '#')
tree = NULL;
else
{
tree = (BiTNode *)malloc(sizeof(BiTNode));
if(tree == NULL )
{
printf("creat error!\n");
return;
}
tree->data = ch;
tree->lchild = bitree_create(tree->lchild);
tree->rchild = bitree_create(tree->rchild);
}
return tree;
}
//先序遍历
//中,左,右
void prev_display(BiTree tree)
{
if(tree != NULL)
{
printf("%c ",tree->data);
prev_display(tree->lchild);
prev_display(tree->rchild);
}
}
//中序遍历
//左,中,右
void midl_display(BiTree tree)
{
if(tree != NULL)
{
prev_display(tree->lchild);
printf("%c ",tree->data);
prev_display(tree->rchild);
}
}
//后序遍历
//左,右,中
void last_display(BiTree tree)
{
if(tree != NULL)
{
prev_display(tree->lchild);
prev_display(tree->rchild);
printf("%c ",tree->data);
}
}
//求深度
int main()
{
BiTree tree = bitree_create(tree);
prev_display(tree);
printf("\n");
midl_display(tree);
printf("\n");
last_display(tree);
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _bitree
{
char data;
struct _bitree *lchild,*rchild;
}*BiTree,BiTNode;
BiTree bitree_create(BiTree tree);
void prev_display(BiTree tree);
void midl_display(BiTree tree);
void last_display(BiTree tree);
//建立二叉树
BiTree bitree_create(BiTree tree)
{
char ch = getchar();
if(ch == '#')
tree = NULL;
else
{
tree = (BiTNode *)malloc(sizeof(BiTNode));
if(tree == NULL )
{
printf("creat error!\n");
return;
}
tree->data = ch;
tree->lchild = bitree_create(tree->lchild);
tree->rchild = bitree_create(tree->rchild);
}
return tree;
}
//先序遍历
//中,左,右
void prev_display(BiTree tree)
{
if(tree != NULL)
{
printf("%c ",tree->data);
prev_display(tree->lchild);
prev_display(tree->rchild);
}
}
//中序遍历
//左,中,右
void midl_display(BiTree tree)
{
if(tree != NULL)
{
prev_display(tree->lchild);
printf("%c ",tree->data);
prev_display(tree->rchild);
}
}
//后序遍历
//左,右,中
void last_display(BiTree tree)
{
if(tree != NULL)
{
prev_display(tree->lchild);
prev_display(tree->rchild);
printf("%c ",tree->data);
}
}
//求深度
int main()
{
BiTree tree = bitree_create(tree);
prev_display(tree);
printf("\n");
midl_display(tree);
printf("\n");
last_display(tree);
printf("\n");
return 0;
}
相关文章推荐
- spring组件扫描<context:component-scan/>使用详解
- C语言单向链表
- java基础
- Spring IOC容器
- 每天一点python——python数据类型
- 黑马程序员——C语言基础04—程序控制
- C# 添加,修改,删除Xml节点 摘录
- C#删除xml指定节点
- Qt数据库sqlite总结
- php-fpm服务启动脚本 service chkconfig
- springboot 项目运行jsp
- C++面向对象操作符重载:调用操作符和函数对象
- C# 添加,修改,删除Xml节点 摘录
- Qt中提高sqlite的读写速度
- Qt 的sqlite数据库的学习
- 深入解析Java中的Classloader的运行机制
- 利用Hbase解决HDFS小文件合并
- 梯度下降的C#实现
- c#和c++互操作(平台调用相关)
- C++实现调用C#(CLI)方法