遍历数据结构课程设计 二叉树的遍历 修订-可编辑

二叉树遍历  时间:2021-02-08  阅读:()

树型结构是信 息的一种 重要组织形式

树是最为常用 的数据结构它的实际应用非常广泛二叉

序遍历有中序和后序遍历序列可以唯一确定一棵二叉树。对于给几个数据的排序或在已知的几个数据中进行查找二叉树均能提供一种十分有效的方法比如在查找问题上任何借助于比较法查找长度为Ⅳ的一个序表的算法都可以表示成一株二叉树。反之任何二叉树都对应一个查找有序表的有效方法根据树的数学理论对于算法分析的某些最有启发性的应用是与给出用于计算各种类型中不同树的数目的公式有关的。

本文对二叉树以及二叉树的各种功能做介绍以及写出一些基本的程序让我们对二叉树的理解有更好的效果。

关键词二叉树的遍历左子树右子树递归

目录

1 .问题概述

1 . 1问题描述

创建二叉树并遍历基本要求

该程序集成了如下功能

 1 二叉树的建立

2递归和非递归先序中序和后序遍历二叉树

3按层次遍历二叉树

4交换二叉树的左右子树

5输出叶子结点

6递归和非递归计算叶子结点的数目

1 . 2需求分析

分先序遍历中序遍历和后序遍历三种情况考虑。

1 .先序遍历当二叉树非空时按以下顺序遍历否则结束操作① 访问根结点

② 按先序遍历规则遍历左子树

③ 按先序遍历规则遍历右子树

2. 中序遍历当二叉树非空时按以下顺序遍历否则结束操作① 按中序遍历规则遍历左子树

② 访问根结点

③ 按中序遍历规3遍历右子树。

3.后序遍历当二叉树非空时按以下顺序遍历否则结束操作① 按后序遍历规则遍历左子树

② 按后序遍历规则遍历右子树

1 . 3设计内容和要求

对任意给定的二叉树顶点数自定建立它的二叉链表存贮结构并利用栈的五种基本运算清空堆栈、压栈、弹出、取栈顶元素、判栈空实现二叉树的先序、 中序、后序三种周游输出三种周游的结果。

1 .4流程图及结构图

开始i=0

图1b

c

a

图1 .2二叉链表存储结构模拟图

2.概要设计

2. 1数据结构设计

1  二叉树结点数据类型定义为template<typename T>struct BiNode

{

BiNode<T>*rchi ld,*lchi ld;//指向左孩子的指针

T data;//结点数据信息};

2  二叉树数据类型定义为template<typename T>class BiTree{template<typename T>friend ostream&operator<<(ostream&os,BiTree<T>&bt);publ ic:B i Tree();//无参构造函数

BiTree(int m){};//有参空构造函数

BiTree(T ary[], int num,T none);//有参构造函数

B i Tree();//析构函数void preorder();//递归前序遍历void inorder();//递归中序遍历void postorder();//递归后续遍历void levelorder();//层序遍历int count();//计算二叉树的结点数void display(ostream&os);//打印二叉树有层次

void creat();//创建二叉树protected: //以下函数供上面函数调用//对应相同功能

Voidcreat(BiNode<T>*&root);//创建void release(BiNode<T>*&root);//删除

BiNode<T>*Bui ld(Tary[], intnum,T none, int idx);//用数组创建二叉树void PreOrder(BiNode<T>* root);//前序遍历void PostOrder(BiNode<T>* root);//后续遍历void LevelNum(BiNode<T>* root);//层序遍历void preorder(Bi Node<T>* root);//递归前序遍历void inorder(BiNode<T>* root);//递归中序遍历void postorder(BiNode<T>* root);//递归后续遍历void levelorder(BiNode<T>*root);//层序遍历int count(BiNode<T>* root);//计算结点数void display(ostream&os,BiNode<T>* root, int dep);//打印static bool leastCommanAncestor(BiNode<T>*root,T va,T vb,BiNode<T>private:BiNode<T>*rootptr;

};

2. 2源程序代码

#include <iostream>usi ng namespace std;

*******************************************************************

******************

T data;

BTNode<T> * Lch i l d,*Rch i l d;

BTNode(T nodeVal ue = T() ,BTNode<T>* l ef tNode = NULL,BTNode<T>*r i ghtNode =NULL )

:data(nodeValue) ,Lchi ld( l ef tNode) ,Rchi ld( r ightNode){ } //可选择参数的默认构造函数

} ;

*******************************************************************

*******************

//二叉树的建立template <class T>voi d createB i nTree(BTNode<T> * &root )

{

BTNode<T>* p = root ;

BTNode<T>* k;

T nodeValue ;ci n>>nodeVal ue;i f (nodeValue==-1 )

{r o o t=NULL;

}else

{root=new BTNode<T>() ;root->data = nodeVal ue;createBinTree( root->Lchi ld) ;createBinTree( root->Rchi ld) ;

}

//二叉树的先序遍历template <class T>void preOrder( BTNode<T> * &p)

{i f (p)

{cout<<p->data<<" " ;preOrder(p->Lchi ld) ;preOrder(p->Rchi ld) ;

}

}

*******************************************************************

*******************

//二叉树的中序遍历template <class T>void i nOrder(BTNode<T> * &p)

{i f (p)

{i nOrder(p->Lchi ld) ;cout<<p->data<<" " ;i nOrder(p->Rchi ld) ;

}

}

*******************************************************************

*******************

//二叉树的后序遍历

PacificRack(年付低至19美元),夏季促销PR-M系列和多IP站群VPS主机

这几天有几个网友询问到是否有Windows VPS主机便宜的VPS主机商。原本他们是在Linode、Vultr主机商挂载DD安装Windows系统的,有的商家支持自定义WIN镜像,但是这些操作起来特别效率低下,每次安装一个Windows系统需要一两个小时,所以如果能找到比较合适的自带Windows系统的服务器那最好不过。这不看到PacificRack商家有提供夏季促销活动,其中包括年付便宜套餐的P...

tmhhost(100元/季)自带windows系统,香港(三网)cn2 gia、日本cn2、韩国cn2、美国(三网)cn2 gia、美国cn2gia200G高防

tmhhost可谓是相当熟悉国内网络情况(资质方面:ISP\ICP\工商齐备),专业售卖海外高端优质线路的云服务器和独立服务器,包括了:香港的三网cn2 gia、日本 cn2、日本软银云服务器、韩国CN2、美国三网cn2 gia 云服务器、美国 cn2 gia +200G高防的。另外还有国内云服务器:镇江BGP 大连BGP数据盘和系统盘分开,自带windows系统,支持支付宝付款和微信,简直就是专...

BlueHost主机商年中618活动全场低至五折

BlueHost 主机商在以前做外贸网站的时候还是经常会用到的,想必那时候有做外贸网站或者是选择海外主机的时候还是较多会用BlueHost主机商的。只不过这些年云服务器流行且性价比较高,于是大家可选择商家变多,但是BlueHost在外贸主机用户群中可选的还是比较多的。这次年中618活动大促来袭,毕竟BLUEHOST商家目前中文公司设立在上海,等后面有机会也过去看看。他们也会根据我们的国内年中促销发...

二叉树遍历为你推荐
木马病毒木马病毒的区别cornerradius如何给TextView加个圆角?打开网页出现错误为什么打不开网页,出错怎么在qq空间里添加背景音乐如何在qq空间中添加背景音乐今日热点怎么删除今日热点自动弹出怎么卸载或屏蔽申请证书求高手教下怎么申请证书直播加速请问哪种播放器的可以播放加速,并且可以保存vbscript教程请教一下高手们,这个VBS脚本难不难啊,我想学学这个,但是又不知道该从哪入手,希望高手指点指点??雅虎天盾有没有用用雅虎天盾的啊?lockdowndios8.1怎么激活内置卡贴
国外vps租用 金万维动态域名 2019年感恩节 阿里云邮箱登陆首页 万网优惠券 网页背景图片 个人域名 我爱水煮鱼 宁波服务器 php空间推荐 免费申请网站 国外ip加速器 流媒体加速 shopex主机 七夕快乐英语 主机管理系统 英雄联盟台服官网 个人免费邮箱 atom处理器 中国联通宽带测速 更多