目录
题目要求:
本题要求实现一个函数,求二叉树中最长路径。
函数接口定义:
void maxlength(BiTree T, char maxway[], int &maxlen, char way[], int len)
解释接口参数:其中T
,maxway
,maxlen
,way
,len
都是用户传入的参数。maxway
用来存放最长路径,而way
用来存放当前路径,maxlen
用来记录最长路径的长度,len
用来记录当前长度。函数无返回值。
其中BiTree
结构定义如下:
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
裁判测试程序样例:
#include<iostream>
using namespace std;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateTree(BiTree &T); /* 创建一棵二叉树,已实现 */
void maxlength(BiTree T, char maxway[], int &maxlen, char way[], int len); // 要实现的函数
int main()
{
BiTree M;
TElemType maxway[100],way[100];
int len=0, maxlen=0;
CreateTree(M); //创建一棵二叉树M
maxlength(M,maxway,maxlen,way,len);
cout <<"最长短路为:"<< maxway;
return 0;
}
输入样例(对于图中给出的树):
![](https://img-blog.csdnimg.cn/fccaef48b229444fa868aa76fd13f013.png)
输出样例:
在这里给出相应的输出。例如:
最长短路为:ABFE
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/11/26
- 星期六下午14:00
随便写写的答案:
void maxlength(BiTree T, char maxway[], int &maxlen, char way[], int len)
{
if(T != NULL)
{
if(T->lchild == NULL && T->rchild == NULL)
{
way[len] = T->data;
if(len == 0) maxway[maxlen] = way[len];
if(len > maxlen)
{
for(int i = 0; i <= len;i++)
{
maxway[i] = way[i];
}
maxlen = len;
}
}
else
{
way[len++] = T->data;
maxlength(T->lchild, maxway, maxlen, way, len);
maxlength(T->rchild, maxway, maxlen, way, len);
}
}
}