数据结构实验之二叉树的建立与遍历
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
已知一个按先序序列输入的字符序列,如abc,de,g,f,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。

Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Sample Input
abc,de,g,f,
Sample Output
cbegdfa
cgefdba
3
5

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
char a[51],i;
typedef struct tree
{char data;tree *l,*r;
}tree;
tree*create()
{tree*t;if(a[++i] == ',')t=NULL;else{t=new tree;t->data=a[i];t->l=create();t->r=create();}return t;
}
void zhongxu(tree*t)
{if(t){zhongxu(t->l);cout<<t->data;zhongxu(t->r);}
}
void houxu(tree*t)
{if(t){houxu(t->l);houxu(t->r);cout<<t->data;}
}
int leave(tree*t)
{if(t == NULL)return 0;if(t->l == NULL&&t->r == NULL)return 1;elsereturn leave(t->l)+leave(t->r);
}
int depth(tree*t)
{int d=0;if(t){int l1=depth(t->l)+1;int l2=depth(t->r)+1;if(l1<l2)d=l2;elsed=l1;}return d;
}
int main()
{
cin>>a;
tree *t;
i=-1;
t=create();
zhongxu(t);
cout<<endl;
houxu(t);
cout<<endl;
int l=leave(t);
int d=depth(t);
cout<<l<<endl<<d<<endl;
return 0;
}

二叉树创建,遍历,叶子,深度相关推荐

  1. 数据结构与算法之二叉树广度遍历、深度遍历总结

    什么是树,它是和链表一样都是一种抽象数据类型(ADT),包括数据结构和对数据的操作. 树是一种二维平面的数据结构结构,它也是由节点组成的,只是它的后继节点不止一个,而链表的后继节点只有一个. 树具有以 ...

  2. java二叉树算法_JAVA 二叉树算法 (遍历、深度、汇总求和)

    二叉树构造类: public class BinaryTree { int data; // 根节点数据 BinaryTree left; // 左子树 BinaryTree right; // 右子 ...

  3. 二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解

    树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的 ...

  4. 二叉树的遍历 及求深度、叶子数

    一.基本概念 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒. 性质: 1.非空二叉树的第n层上至多有2^(n-1)个元素. 2.深度为h的二叉树至多有2^h-1个结点. 3.对任何一棵二叉树 ...

  5. Java创建遍历二叉树(递归)并求树高及叶节点个数(代码全)

    在学习树的操作之后,我们就可以对数这种数据结构进行创建和使用了,话不多说,直接上代码 PS:为了代码复用和通用性,采用接口然后打包了整个工程,存储数据定义为泛型 一.接口及链结点定义 package ...

  6. 二叉树 —— 创建二叉树 先序遍历 、中序遍历、后序遍历(递归方式、非递归方式)

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef char DataType; #de ...

  7. Python实现二叉树的三种深度遍历方法!

    python代码实现了二叉树,这次将会实现二叉树的几种遍历方法,来更好的解析二叉树的结构特点.分别是一种广度遍历,和三种深度遍历方法:先序遍历,中序遍历,后序遍历.下面是代码实现: 1.先序遍历 遍历 ...

  8. 二叉树创建及遍历算法(递归及非递归)(转)

    //二叉树处理头文件 //包括二叉树的结构定义,二叉树的创建,遍历算法(递归及非递归), /* 作者:成晓旭 时间:2001年10月7日(18:49:38-20:00:00) 内容:完成二叉树创建,二 ...

  9. 二叉树层次遍历--广度遍历和深度遍历

    问题来源:二叉树层次遍历 问题描述:给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例子: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 ...

最新文章

  1. 怎么帮java转换成类图_有把java代码直接转成uml类图的工具吗 – 手机爱问
  2. 任正非致“背叛者”与给竞争对手捐款
  3. 无损压缩算法历史——熵编码是最早出现的,后来才有Lzx这些压缩算法
  4. 用Tableau画3D模型之二(提高篇)
  5. 数据结构之外部排序:置换-选择排序
  6. 动态数组与迭代器 0119
  7. 大数据之-Hadoop3.x_MapReduce_WordCount案例环境准备---大数据之hadoop3.x工作笔记0088
  8. java akka actor性能_akka-http - 如何通过Akka HTTP(Java)与Akka Actor进行交互 - 堆栈内存溢出...
  9. 现代操作系统-原理与实现(上)【银杏书-读书笔记】
  10. Anaconda 的Jupyter Notebook更换默认浏览器
  11. 程序员容易发福的原因及解决办法
  12. 1. 物理内存初始化-linux4.0
  13. 维京小队3dm中文版|维京小队中文免安装版
  14. 261期计算机开机号,福彩3D2017第261期彩吧3D开机号147
  15. 海报与Banner的区别
  16. 【观察】联想“内生外化”:能干肯干、真招实招加速中小企业数字化转型
  17. 近年来出现的一种新型AIE结构单元QM-β-Gal发色团-喹啉-丙二腈
  18. Jetpack Compose 从入门到入门(六)
  19. c语言一剑穿心图案编程,通达信一剑穿心指标公式(附图,源码,贴图)
  20. 【项目】健康项目day5总结

热门文章

  1. enscape材质名称大全_2020年茅台价格表和图片大全一览 茅台酒真假鉴别方法
  2. plantuml 方法图_plantuml画流程图
  3. python逐行写入文件_python逐行读写txt文件的实例讲解
  4. PL-SLAM Real-time monocular visual SLAM with points and lines
  5. 周期(KMP算法之Next数组的性质)
  6. Electron的学习笔记
  7. 爬取京东评论、分词+词频统计、词云图展示
  8. Maven使用archetype迅速生成项目骨架
  9. 【Linux】CentOS 7 安装 docker
  10. TypeError: Cannot set properties of undefined (setting ‘innerHTML‘)