博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【二叉树系列】二叉树课程大作业
阅读量:5983 次
发布时间:2019-06-20

本文共 1597 字,大约阅读时间需要 5 分钟。

本博客将以代码的形式详细讲解二叉树的所有算法,包括创建二叉树,二叉树的三种遍历方式,二叉树的各种属性算法,如:求高度,求叶子节点数,求节点数,以及二叉树最常见的应用哈夫曼树,代码如下:

# include
# include
# include
# include
# define N 1# define M 2*N-1typedef char * HC[N+1];typedef struct bt{ char x; struct bt *lchild; struct bt *rchild;}bt,*pbt;typedef struct { int parent; int weight, lchild, rchild;}HT[M+1];void creatbt(pbt *root){ char ch=getchar(); if(ch==' ') *root=NULL; else { *root=(pbt)malloc(sizeof(bt)); (*root)->x=ch; creatbt(&((*root)->lchild)); creatbt(&((*root)->rchild)); }}void preorder(pbt root){ if(root!=NULL) { printf("%c",root->x); preorder(root->lchild); preorder(root->rchild); }}void inorder(pbt root){ if(root!=NULL) { inorder(root->lchild); printf("%c",root->x); inorder(root->rchild); }}void postorder(pbt root){ if(root!=NULL) { postorder(root->lchild); postorder(root->rchild); printf("%c",root->x); }}int btdepth(pbt root,int h){ static int depth=0; if(root!=NULL) { if(h>depth) depth=h; btdepth(root->lchild,h+1); btdepth(root->rchild,h+1); } return depth;}int nodenum(pbt root){ static int n=0; if(root!=NULL) { n++; nodenum(root->lchild); nodenum(root->rchild); } return n;}int leafnum(pbt root){ static int n=0; if(root!=NULL) { leafnum(root->lchild); leafnum(root->rchild); if((root->lchild==NULL)&&(root->rchild==NULL)) n++; } return n;}void select(HT ht,int n,int *x,int *y){ int i,min1=100,min2=200; for(i=1;i<=n;i++) { if(ht[i].parent==0&&ht[i].weight
程序运行结果如下:

注意对于同一个二叉树,哈夫曼码的结果不唯一,上述输出只是一种情况。

转载于:https://www.cnblogs.com/hainange/p/6334054.html

你可能感兴趣的文章
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>