二叉树的建立与遍历,叶子结点的数目以及树的深

发布时间:2021-06-06

二叉树的建立与遍历,叶子结点的数目以及树的深度的求法,采用递归求解

二叉树的建立与遍历,叶子结点的数目以及树的深度的求法,采用递归求解.txt我不奢望什么,只希望你以后的女人一个不如一个。真怀念小时候啊,天热的时候我也可以像男人一样光膀子!是我个人写的,很简单的记录下来了,呵呵呵。

我的百度空间:/heihei_shaweiwei/blog/item/eec5a3de6bb28c0462279805.html

#include <iostream>

using namespace std;


//定义树的结构
typedef struct _binTree
{
char data;
_binTree *lNode,*rNode;
}binTree;

//创建二叉树
void createT(binTree *&rootNode,binTree *tempNode)
{
if(rootNode==NULL)
{
rootNode=tempNode; return;
}
else
{
if(rootNode->data > tempNode->data)
{
createT(rootNode->lNode,tempNode);
}
else if(rootNode->data < tempNode->data)
{
createT(rootNode->rNode,tempNode);
}
}
}
//打印已创建的数
void printT(binTree *rootNode)
{
if(rootNode==NULL)return ;
else
{
printT(rootNode->lNode);
cout<<rootNode->data<<" ";
printT(rootNode->rNode);
}
}
//先序遍历二叉树
void preTraverse(binTree *rootNode)
{
if(rootNode==NULL)return ;
else
{
cout<<rootNode->data<<" ";
printT(rootNode->lNode);
printT(rootNode->rNode);
}
}
//中序遍历二叉树
void midTraverse(binTree *rootNode)
{
if(rootNode==NULL)return ;
else
{
printT(rootNode->lNode);
cout<<rootNode->data<<" ";
printT(rootNode->rNode);
}
}
//后序遍历二叉树
void lastTraverse(binTree *rootNode)
{
if(rootNode==NULL)return ;
else
{
printT(rootNode->lNode);
printT(rootNode->rNode);
cout<<rootNode->data<<" ";
}
}
//计算结点的总个数
int nodeTotal(binTree *rootNode)
{
if(rootNode==NULL)return 0;
else
{
return 1+nodeTotal(rootNode->lNode)+nodeTotal(rootNode->rNode);
}
}
//计算二叉树的深度
int treeDepth(binTree *rootNode)
{
if(rootNode==NULL)return -1;
else
{
int lH=treeDepth(rootNode->lNode);
int rH=treeDepth(rootNode->rNode);
if(lH>rH)return lH+1;
return rH+1;
}
}
//计算叶子结点的个数
int leafTotal(binTree *rootNode)
{
if(rootNode==NULL)return 0;
else
{
if(rootNode->lNode==NULL && rootNode->rNode==NULL)return 1;
else
{
int lH=leafTotal(rootNode->lNode);
int rH=leafTotal(rootNode->rNode);
return rH+lH;
}
}
}
int main()
{
binTree *rootNode,*tNode;
rootNode=NULL; tNode=NULL;
char ch;
cout<<"按照下面给出的顺序进行输入构建二叉树:"<<endl<<"F D B E A C J H K G I L"<<endl;
cin>>ch;
while(ch!='0')
{
tNode=new binTree;
tNode->data=ch; tNode->lNode=NULL; tNode->rNode=NULL;
createT(rootNode,tNode);
cin>>ch;
}
if(rootNode==NULL)
{
cout<<"Tree is NULL."<<endl;
}
else
{
cout<<"正常输出二叉树的各节点数据:"
;;
printT(rootNode); cout<<endl;
cout<<"先序遍历二叉树的各节点数据:";
preTraverse(rootNode); cout<<endl;
cout<<"中

二叉树的建立与遍历,叶子结点的数目以及树的深.doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219