二叉树的建立与遍历,叶子结点的数目以及树的深(4)
发布时间:2021-06-06
发布时间:2021-06-06
二叉树的建立与遍历,叶子结点的数目以及树的深度的求法,采用递归求解
8
/ \ / \
2 4 6 9
/ \ / \ / \ / \
1 -1-1-1-17 -1 -1
/ \ / \
-1 -1 -1 -1
那么输入时的序列为:5321-1-1-14-1-186-17-1-19-1-1
#include <iostream> //预编译命令
using namespace std;
struct TREE //结构体定义
{
int data; //整型数
struct TREE *L,*R; //TREE结构指针
};
//被调用函数insert,将结点插入二叉树
void insert(TREE *&pRoot,TREE *pNode)
{
if(pRoot==NULL) //如果根结点为空
{
pRoot=pNode; //将结点pNode插入根结点
return; //返回
}
else //根结点不为空
{
//如果pNode结点数据小于等于根结点数据
if(pNode->data<=pRoot->data)
insert(pRoot->L,pNode); //插入左子树
else //如果pNode结点数据大于根结点数据
insert(pRoot->R,pNode); //插入左子树木
} //函数体结束
}
//被调用函数,形参为TREE结构指针,输出二叉树内容
void print(TREE *pRoot)
{ //函数体开始
if(pRoot==NULL) //根或子树根结点为空
return; //返回
print(pRoot->L); //输出左子树内容
cout<<pRoot->data<<endl; //输出数据
print(pRoot->R); //输出右子树内容
} //被调用函数结束
int main() //主函数开始
{ //函数体开始
struct TREE *pRoot,*pNode; //TREE型结构指针
int temp; //临时变量,用于用户输入数据
pRoot=NULL; //初始化二叉树根结点为空
pNode=NULL; //初始化待插入结点的指针为空
cout<<"请输入要插入结点的数据\n"; //提示信息
cout<<"如果输入-1表示插入过程结束\n"; //提示信息
cin>>temp; //输入待插入结点数据
while(temp!=-1) //当型循环,-1为结束标志
{ //循环体开始
//为待插入结点分配内存单元
pNode=new TREE;
pNode->data=temp;
//将赋值给结点的数据域
pNode->L=NULL; //将结点的左右
pNode->R=NULL; //
下一篇:医学专业毕业实习报告