2个回答
展开全部
法1:
template<class T>
int tree<T>::tree_level(tree_node<T> *root)//利用递归:
{
if(root==NULL)
return 0;
else
{
int l_level=tree_level(root->rchild);//记录左子树的层数
int r_level=tree_level(root->rchild);//记录右子树的层数
return l_level>r_level?l_level+1:r_level+1;//选择左右层数较大的一个+1返回
}
}
法2:
template<class T>
void tree<T>::tree_level(tree_node<T> *root,int level,int& deth)//
{//用level记录当前的层数
if(root!=NULL)
{
if(level>deth)
{
deth=level;//deth和当前层数level比较,取较大值
}
tree_level(root->lchild,level+1,deth);//level+1看其左子树
tree_level(root->rchild,level+1,deth);//level+1看其右子树
}
}
template<class T>
int tree<T>::tree_level(tree_node<T> *root)//利用递归:
{
if(root==NULL)
return 0;
else
{
int l_level=tree_level(root->rchild);//记录左子树的层数
int r_level=tree_level(root->rchild);//记录右子树的层数
return l_level>r_level?l_level+1:r_level+1;//选择左右层数较大的一个+1返回
}
}
法2:
template<class T>
void tree<T>::tree_level(tree_node<T> *root,int level,int& deth)//
{//用level记录当前的层数
if(root!=NULL)
{
if(level>deth)
{
deth=level;//deth和当前层数level比较,取较大值
}
tree_level(root->lchild,level+1,deth);//level+1看其左子树
tree_level(root->rchild,level+1,deth);//level+1看其右子树
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
// bzl.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "math.h"
typedef struct Bnode{
char data;
struct Bnode *lchild,*rchild;
}Bnode;
int i=0;
char *s="abc de g f ";
void preorder(Bnode *);
void visite(Bnode *);
void createTree(Bnode * &p){
if(s[i]!=' '){
p=new Bnode;
p->data=s[i];
i++;
createTree(p->lchild);
createTree(p->rchild);
}
else
{
p=NULL;i++;
}
}
int high(Bnode *T){
int r_lever,l_lever;
if(T==NULL)
return 0;
else{
r_lever=high(T->lchild)+1;
l_lever=high(T->rchild)+1;
if(a>b)
return r_lever;
else return l_lever;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int lever;
Bnode *p;
createTree(p);
lever=high(p);
printf("二叉树的深度为:%d",lever);
printf("\n");
return 0;
}
//
#include "stdafx.h"
#include "math.h"
typedef struct Bnode{
char data;
struct Bnode *lchild,*rchild;
}Bnode;
int i=0;
char *s="abc de g f ";
void preorder(Bnode *);
void visite(Bnode *);
void createTree(Bnode * &p){
if(s[i]!=' '){
p=new Bnode;
p->data=s[i];
i++;
createTree(p->lchild);
createTree(p->rchild);
}
else
{
p=NULL;i++;
}
}
int high(Bnode *T){
int r_lever,l_lever;
if(T==NULL)
return 0;
else{
r_lever=high(T->lchild)+1;
l_lever=high(T->rchild)+1;
if(a>b)
return r_lever;
else return l_lever;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int lever;
Bnode *p;
createTree(p);
lever=high(p);
printf("二叉树的深度为:%d",lever);
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询