输入

二叉树的先序遍历序列,用#代表空树或空子树。

输出

共五行

前三行依次输出先序、中序和后序遍历序列,

第四行输出二叉树的高度,

第五行依次输出二叉树总结点数目、叶子结点数目、度为1的结点数目。

样例输入

A B # D # # C E # # F # #

样例输出

PreOrder: A B D C E F
InOrder: B D A E C F
PostOrder: D B E F C A
3
6 3 1

题目很简单,基本的二叉树操作。需要注意的是输入结点之间有空格,而且输出结点时也有空格,行末不能有空格。

 #include <cstdio>

 typedef char TElemType;

 typedef struct node {
TElemType data;
struct node *left_child;
struct node *right_child;
} BTNode, *BinTree; int node_count = ;
int leaf_count = ;
int one_count = ; void Create( BTNode*& t) {
char c;
char ch;
scanf( "%c", &c );
ch = getchar();
if( c =='#' )
t = NULL;
else {
t = new BTNode;
t->data = c;
Create( t->left_child );
Create( t->right_child );
}
} void PreOrder( BTNode* t ) {
if( t != NULL ) {
printf( " %c", t->data );
PreOrder( t->left_child );
PreOrder( t->right_child );
}
} void InOrder( BTNode *t ) {
if( t != NULL ) {
InOrder( t->left_child );
printf( " %c", t->data );
InOrder( t->right_child );
}
} void PostOrder( BTNode *t ) {
if( t != NULL ) {
PostOrder( t->left_child );
PostOrder( t->right_child );
printf( " %c", t->data );
}
} int Height( BTNode *t ) {
int i, j;
if( t == NULL ) return ;
else {
i = Height( t->left_child );
j = Height( t->right_child );
}
return ( i > j ) ? ( i + ) : ( j + );
} void BTNode_Count( BTNode *t ) {
if( t == NULL ) return ;
else {
BTNode_Count( t->left_child );
BTNode_Count( t->right_child );
node_count++;
}
} void BTNode_LeafCount( BTNode *t ) {
if( t == NULL ) return ;
else {
if( t->left_child == NULL && t->right_child == NULL ) {
leaf_count++;
}
else if( t->left_child == NULL && t->right_child != NULL || t->left_child != NULL && t->right_child == NULL ){
one_count++;
}
BTNode_LeafCount( t->left_child );
BTNode_LeafCount( t->right_child );
}
} int main() {
BTNode T;
BinTree root = &T;
Create( root );
printf( "PreOrder:" );
PreOrder( root );
printf( "\n" );
printf( "InOrder:" );
InOrder( root );
printf( "\n" );
printf( "PostOrder:" );
PostOrder( root );
int height = Height( root );
BTNode_Count( root );
BTNode_LeafCount( root );
printf( "\n%d\n%d %d %d", height, node_count, leaf_count, one_count );
return ;
}

NOJ1019-计算二叉树的高度和结点数的更多相关文章

  1. [九度OJ]1113.二叉树(求完全二叉树任意结点所在子树的结点数)

    原题链接:http://ac.jobdu.com/problem.php?pid=1113 题目描述: 如上所示,由正整数1,2,3……组成了一颗特殊二叉树.我们已知这个二叉树的最后一个结点是n.现在 ...

  2. C++计算二叉树的节点数和高度

    用struct结构体的写法: /* * description: 计算二叉树的层数和节点数 * writeby: nick * date: 2012-10-23 16:16 * */ #include ...

  3. [nowCoder] 完全二叉树结点数

    给定一棵完全二叉树的头节点head,返回这棵树的节点个数.如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法. 分析:遍历的话不管是前序.中序.后序还是层次都是O(N),低于O(N)只能是 ...

  4. iOS计算完整文字高度(适应iOS 10)

    动态计算文字的高度:(切记LineSapcing>=2,不然会显示不全) +(CGSize) boundingALLRectWithSize:(NSString*) txt Font:(UIFo ...

  5. iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示

    一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页 ...

  6. iOS-动态计算Label的高度

    一. 要求 1.根据网络请求的回来的字符串内容,动态计算Label的高度. 二. 注意点 1. 要注意设置label 的 numberOfLines 为0; 2. MAXFLOAT 的作用. 设置高度 ...

  7. content.boundingRectWithSize计算出来的高度不准

      计算出来的高度会少一行的高度,最后一行会显示不全.减掉padding会解决这个问题.   let padding = self.reviewText.textContainer.lineFragm ...

  8. iOS开发总结-UITableView 自定义cell和动态计算cell的高度

    UITableView cell自定义头文件:shopCell.h#import <UIKit/UIKit.h>@interface shopCell : UITableViewCell@ ...

  9. 求二叉树第n层节点数

    在知乎看到今日头条的一个面试题“求二叉树第n层节点数”:https://zhuanlan.zhihu.com/p/25671699,想到了这样一个解法,欢迎大家交流 我的解法采用递归的思想,从0层开始 ...

随机推荐

  1. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  2. python写入中文到文件乱码的问题

    file = open(filename,'a',encoding='utf8')#指定写入编码为utf8,否则写入中文会乱码

  3. css+js+html基础知识总结

    css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...

  4. Flash视频播放器开发经验总结

    HTTP协议更优 目前几乎所有的视频点播网站全部采用HTTP协议传输数据.因为相对于诸如RTMP等协议来说,HTTP协议是无状态的,数据传输完毕就断开连接,这样服务器就可以腾出资源来服务更多的用户.而 ...

  5. jetty简介

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  6. css3多列example

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Excel2007给表格设置成只读加密属性 让他人无法修改

    在制作一些报表和公司的表格时,我们常常需要给Excel表格加密或者设置成只读属性来加以防护这些重要表格.给表格加密可以预防他人无法打开表格,只有通过输入正确的密码后才可以正常打开.设置成只读的话,可以 ...

  8. javascript之delete操作符

    理解delete 理论 代码段的类型 执行上下文 活动对象 / 变量对象 属性的特性 内置属性与 DontDelete 未声明的赋值 Firebug的困惑 在eval中删除变量 浏览器兼容性 Geck ...

  9. static 在多台下的特性

    被static修饰的方法不具备多台的特性,因为这个时候,该方法已经不具备"后期绑定"的性质了,也就是说,基类的引用就算指向导出类,调用的static的方法还是用基类的. 如果要调用 ...

  10. 完成了server和client的框架设计

    界面暂且也不搞.先把框架搭建起来.