博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法之数学--二叉树的各种遍历方法和相关问题 2021-03-11(未完待续)
阅读量:4101 次
发布时间:2019-05-25

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

二叉树的建立和遍历

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
建立以二叉链作为存储结构的二叉树,实现 1)先序遍历; 2)中序遍历; 3)后序遍历; 4)层序遍历; 5)编程计算二叉树的叶子结点个数。

输入描述:

按照先序遍历序列输入二叉树中数据元素的值,没有的输入0表示。

输出描述:

第一行输出先序遍历序列 第二行输出中序遍历序列 第三行输出后序遍历序列 第四行输出叶子结点的个数。

代码

#include 
using namespace std;typedef struct node{
char data; struct node *leftchild,*rightchild;}*BitTree;//先序遍历方式建立二叉树void CreateBitTree(BitTree &T){
char c; cin>>c; if(c=='0') T==NULL; else{
T = new node; T->data = c; CreateBitTree(T->leftchild); CreateBitTree(T->rightchild); } }//先序输出void PreOrderTraverse(BitTree T){
if(!T==NULL){
cout<
data<<' '; PreOrderTraverse(T->leftchild); PreOrderTraverse(T->rightchild); }}//中序输出void InOrderTraverse(BitTree T){
if(!T==NULL){
InOrderTraverse(T->leftchild); cout<
data<<' '; InOrderTraverse(T->rightchild); }}//后序输出void PostOrderTraverse(BitTree T){
if(!T==NULL){
PostOrderTraverse(T->leftchild); PostOrderTraverse(T->rightchild); cout<
data<<' '; }}int sum = 0;//输出叶子结点个数int Count(BitTree T){
if(T!=NULL){
if(T->leftchild==NULL&&T->rightchild==NULL){
sum++; } Count(T->leftchild); Count(T->rightchild); } return sum;}int main(){
BitTree T; CreateBitTree(T); PreOrderTraverse(T); cout<

还有例题

转载地址:http://rpzsi.baihongyu.com/

你可能感兴趣的文章
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>