判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
来源:互联网 发布:java里解压缩gzip文件 编辑:程序博客网 时间:2024/06/04 20:00
#include "stdio.h"
#include "malloc.h"
int count;
typedef struct node
{
char data;
struct node *LChild;
struct node *RChild;
}BiTNode,*BiTree;
void creatbitree(BiTree * bt) // 先序便历序列创建二叉树链表
{
char ch=getchar();
if (ch=='#')
{
*bt=NULL;
}
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
creatbitree(&((*bt)->LChild));
creatbitree(&((*bt)->RChild));
}
}
int ProOrder(BiTree root) // 先序便历输出二叉树节点
{
if (root!=NULL)
{
printf("%c ",root->data); // 输出根节点
count++;
ProOrder(root->LChild);
ProOrder(root->RChild);
}
return count;
}
int PostTreeDepth(BiTree bt) // 后序便历求二叉树的高度
{
int hl,hr,max;
if (bt!=NULL)
{
hl=PostTreeDepth(bt->LChild);
hl=PostTreeDepth(bt->LChild);
max=hl>hr?hl:hr ;
return (max+1) ;
}
else
return 0;
}
void Judgment(int m,int n) // 判断该二叉树是否为满二叉树
{
int s=1;
for (int i=1;i<=n;i++)
{
s=s*2;
}
if (s-1==m)
{
printf("是满二叉树!\n");
}
else
{
printf("不是满二叉树!\n");
}
}
void main()
{
int c,h;
count=0;
BiTree root;
creatbitree(&root);
c=ProOrder(root);
h=PostTreeDepth(root);
printf("节点的总数:%d\n",count);
printf("二叉树的深度:%d\n",h);
Judgment(c,h);
}
- 判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
- 【二叉树】判断二叉树是否为平衡二叉树
- 剑指offer 39-二叉树的深度 判断二叉树是否为平衡二叉树
- 二叉树的深度以及判断二叉树是否为平衡二叉树
- 如何判断二叉树是否为满二叉树?
- 判断一个二叉树是否为满二叉树
- java 求二叉树的深度 / 节点总数
- 判断一棵树是否为满二叉树
- 判断是否为满二叉树
- 二叉树的深度,判断是否是平衡二叉树
- 求二叉树深度、判断是否是平衡二叉树
- 【树】二叉树的深度 + 树的最小深度 + 判断是否为平衡二叉树
- 求二叉树的最大深度、最小深度、反转二叉树及判断是否为平衡二叉树
- java 二叉树(四)求二叉树的深度和节点总数
- 判断二叉树是否为二叉搜索树BST
- 判断二叉树是否为轴对称二叉树
- 判断二叉树是否为二叉搜索树
- 判断一棵二叉树是否为完全二叉树
- android程序安装后图标不显示
- 十大免费防火墙大盘点
- [转]常见.Net 英文专业词汇
- Hibernate框架中如何将多对多映射转化为多对一映射
- 停下来是为了更好地出发
- 判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
- 动态建立和删除二维数组
- 常见计算机英文专业词汇
- 阅读优秀代码是提高开发人员修为的一种捷径
- 关于VC/MFC中获得argc,argv的问题
- 或许是因为本科不是学cs的HTML5原因
- C/C++ union用法
- DOM以及广义的基于树的处理具有几个优点
- Robotium_Android Robotium Solo语法知识(1)