博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的创建与遍历
阅读量:3966 次
发布时间:2019-05-24

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

二叉树的基本操作

以下代码通过先序法创建一个二叉树,然后运用递归思想实现对二叉树的先序、中序、后序的遍历。

#include 
#include
using namespace std; /* * 二叉树的二叉链表结构的创建与相关操作 * 1.先序法创建二叉树 * 2.先序遍历 * 3.中序遍历 * 4.后序遍历 * 说明:如果结点为叶子结点,只需将左右孩子的值置为'#',(即紧邻之后的两个输入为'#'); * 例如:输入:a b # # c # # ,得到以a为根结点,b为左孩子,c为右孩子的二叉树。 *///二叉树结点结构体typedef struct BTNode{
char data; struct BTNode *pLchild,*pRchild;}BTNode,*BinTree;//声明函数void CreatBTree(BinTree&); //创建二叉树void PreTraverseTree(BinTree); //先序遍历void InTraverseTree(BinTree); //中序遍历void PostTraverseTree(BinTree); //后序遍历//main函数int main(){
BTNode* pBintree=NULL; CreatBTree(pBintree); cout<<"先序遍历:"; PreTraverseTree(pBintree); cout<<"\n中序遍历:"; InTraverseTree(pBintree); cout<<"\n后序遍历:"; PostTraverseTree(pBintree); return 0;}//先序建立二叉树void CreatBTree(BinTree& bt){
char val; cout<<"请输入结点值:"; cin>>val; if(val=='#') {
return; } if(bt==NULL) {
bt=(BTNode*)malloc(sizeof(BTNode)); bt->data=val; bt->pLchild=NULL; bt->pRchild=NULL; } CreatBTree(bt->pLchild); CreatBTree(bt->pRchild);}//先序遍历void PreTraverseTree(BinTree bt){
if(bt!=NULL) {
cout<
data<<"->"; PreTraverseTree(bt->pLchild); PreTraverseTree(bt->pRchild); } else return;}//中序遍历void InTraverseTree(BinTree bt){
if(bt!=NULL) {
InTraverseTree(bt->pLchild); cout<
data<<"->"; InTraverseTree(bt->pRchild); } else return;}//后序遍历void PostTraverseTree(BinTree bt){
if(bt!=NULL) {
PostTraverseTree(bt->pLchild); PostTraverseTree(bt->pRchild); cout<
data<<"->"; } else return;}

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

你可能感兴趣的文章
Java 集合框架
查看>>
Weblogic 精萃
查看>>
Servlet 精萃
查看>>
XStream 精萃
查看>>
XStream 环境设置
查看>>
Git 分支
查看>>
Git 冲突
查看>>
Git Merging vs. Rebasing
查看>>
[第9课] 箱线图
查看>>
[第10课] 箱线图2
查看>>
[第11课]统计:集中趋势
查看>>
[第12课] 统计:样本和总体
查看>>
[第13课] 统计:总体方差
查看>>
[第14课] 统计:样本方差
查看>>
[第15课] 统计:标准差
查看>>
[第16课]统计:诸方差公式
查看>>
[第17课] 随机变量介绍
查看>>
[第18课] 概率密度函数
查看>>
Pandas 精萃
查看>>
[第19课] 二项分布1
查看>>