平衡二叉树的判定

1000(ms)

10000(kb)

2325 / 5161

Tags: 树

编写程序判断给定的二叉树是否是平衡二叉树。

输入

二叉树的先序序列。

输出

如果是平衡二叉树,输出yes!,否者输出no!

样例输入

AB##C##

样例输出

yes!
#include<stdio.h>
#include<malloc.h>
struct BTNode
{char data;int hight;//计算高度 BTNode *lchild;BTNode *rchild;
};
void PreOrder(BTNode *&p)//先序遍历创建二叉树
{char a;scanf("%c",&a);if(a=='#') p=NULL;else{p=(BTNode *)malloc(sizeof(BTNode));p->data=a;PreOrder(p->lchild);PreOrder(p->rchild);}
}
void PostOrder(BTNode *&p)//后序遍历赋值hight的值,即从树的底部到根结点顶部
{if(p!=NULL){PostOrder(p->lchild);PostOrder(p->rchild);if(p->lchild==NULL&&p->rchild==NULL) p->hight=1;//如果左右结点都为空,则为底部的子叶结点,将hight赋值为1 else if(p->lchild!=NULL&&p->rchild==NULL) p->hight=p->lchild->hight+1;//一个孩子为空,一个孩子不为空,将其hight赋值为不为空的孩子的hight+1; else if(p->lchild==NULL&&p->rchild!=NULL) p->hight=p->rchild->hight+1;//一个孩子为空,一个孩子不为空,将其hight赋值为不为空的孩子的hight+1; else if(p->lchild!=NULL&&p->rchild!=NULL)//都不为空时hight赋值为左右孩子中最大的hight+1 {if(p->lchild->hight>p->rchild->hight) p->hight=p->lchild->hight+1;else p->hight=p->rchild->hight+1;}}
}
int t=0;//设置标记
void Search(BTNode *&p)//先序遍历查看该结点的左右孩子的hight值的差小于等于|1|。
{if(p!=NULL){if(p->lchild!=NULL&&p->rchild!=NULL){if(p->lchild->hight-p->rchild->hight!=0&&p->lchild->hight-p->rchild->hight!=1&&p->lchild->hight-p->rchild->hight!=-1) t=1;}else if(p->lchild!=NULL&&p->rchild==NULL){if(p->lchild->hight!=1) t=1;}else if(p->lchild==NULL&&p->rchild!=NULL){if(p->rchild->hight!=1) t=1;}Search(p->lchild);Search(p->rchild);}
}
int main()
{BTNode *p;PreOrder(p);PostOrder(p);Search(p);if(t==0) printf("yes!");else printf("no!");
}

西南科技大学OJ题 平衡二叉树的判定1077相关推荐

  1. 西南科技大学OJ题 邻接矩阵到邻接表1055

    邻接矩阵到邻接表 5000(ms) 10000(kb) 2341 / 5552 假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表. 输入 第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1) ...

  2. 西南科技大学OJ题 求最小生成树(Prim算法)1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...

  3. 西南科技大学OJ题 哈夫曼译码0986

    哈夫曼译码 1000(ms) 10000(kb) 1974 / 4142 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...

  4. 西南科技大学OJ题 顺序表插入操作的实现0943

    顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...

  5. 西南科技大学OJ题 单链表的删除操作的实现0953

    单链表的删除操作的实现 1000(ms) 65535(kb) 2896 / 13622 建立长度为n的单链表,删除第i个结点之前的结点. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自 ...

  6. 西南科技大学OJ题 邻接矩阵存储简单路径1070

    邻接矩阵存储简单路径 5000(ms) 10000(kb) 2197 / 4175 Tags: 邻接矩阵 假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径. 输入 简单 ...

  7. 西南科技大学OJ题 above average 0706

    above average 1000(ms) 65535(kb) 1531 / 3045 It is said that 90% of frosh expect to be above average ...

  8. 山东科技大学OJ题库 1219 体重正常吗?

    1219 体重正常吗? Description 体重指数计算器是体重与身高之比值,知道它很重要,可以了解你的健康情况,你的体重是不是标准体重.超重和肥胖等.编写一个体重指数计算器,只需要输入身高与体重 ...

  9. 山东科技大学OJ题库 1904 帮小明算算数

    1904 帮小明算算数 Description 小明现在正在学习加法,完成家庭作业后,经常需要借助计算机来验证自己做的答案是否正确.请帮小明写一个程序,辅助他进行验证答案. Input 输入只有一行, ...

  10. 山东科技大学OJ题库 1013-多少张钞票

    1013-多少张钞票 Description 客户去商店买东西时,不超过100美金的账单喜欢用现金支付.商店喜欢用最少的钞票给付客户的找零.请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张1 ...

最新文章

  1. Java一致性Hash算法的实现
  2. 查看网卡[网络接口]
  3. SELECT 与 SET 对变量赋值的区别(存储过程)
  4. 值引用和引用问题分析
  5. 计算机原理之程序是怎么运行的
  6. OS X Mountain Lion上的多个Java版本
  7. 现代软件工程 期中/期末总结博客作业
  8. python抽荣耀水晶_教你2种免费拿荣耀水晶的方法,获奖概率让人惊喜,一般人我不告诉他...
  9. 想学会财务分析:先看懂三大表
  10. SDUT 2766 小明传奇2
  11. Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网
  12. js活jQuery实现动态添加、移除css/js文件
  13. [Linux 002]——Linux的常用命令
  14. emq mysql消息存储_EMQ X 规则引擎系列(二)存储消息到 MySQL 数据库
  15. Word2016以上版本兼容模式不能使用公式编辑器的解决办法
  16. 林海峰讲的python_python常用模块-------转自林海峰老师
  17. 利用LM317的LED恒流源电路图
  18. 什么是工作分解结构?What Work Breakdown Structure?
  19. jQuery水平手风琴图片轮播切换
  20. HDU 3713 Double Maze

热门文章

  1. 中望cad linux版本,中望CAD2021下载 中望CAD ZWCAD 2021 For Linux v5.0.1446 官方正式版(支持国产UOS系统) 下载-脚本之家...
  2. Flutter 长截屏适配 Miui 系统,一点都不难
  3. Linux下LOIC的下载和应用
  4. 在 Android 中使用生物识别,kotlin开发思维
  5. 计算机操作系统-设备驱动实现实验报告
  6. 天天生鲜商品详情页HTML+css
  7. uniapp 打包H5自定义模板
  8. 【伸手党福利】开发人员重装系统顺序
  9. 创建数据库常用SQL语句
  10. 什么是压力测试,如何做压力测试?