假设二叉树采用二叉链表存储结构存储,试设计一个算法,求出该二叉树中第一条最长的路径长度以及此路径上各结点的值。

admin2013-07-12  31

问题 假设二叉树采用二叉链表存储结构存储,试设计一个算法,求出该二叉树中第一条最长的路径长度以及此路径上各结点的值。

选项

答案void Longpath(BiTree b,TElemType path[],int pathlen,TElemType longpath[],int longpathlen){ int i; if(b==NULL)( if(pathlen~longpathlen){ //若当前路径更长,将路径保存在longpath中 for(i=pathlen-1;i>=0;i--) longpath[i]=path[i]; longpathlen=pathlen; } } else{ path[:pathlen]=b->data; //将当前结点放入路径中 pathlen++; //路径长度增l Longpath(b->.Ichil d.pat.h,pa七hlen,longpath,longpathlen); //递归扫描左子树 Longpath(b->rchil d.pat.h,pathlen,longpath,longpathlen); //递归扫描右子树 path]en--; //环境恢复 } }

解析 采用path数组保存扫描到当前结点的路径,pathlen保存扫描到当前结点的路径长度,longpath数组保存最长的路径,longpathlen保存最长路径长度。当b为空时,表示当前扫描的一个分支已扫描完毕,将pathlen与longpathlen进行比较,将较长路径及路径长度分别保存在longpath和longpathlen中。
转载请注明原文地址:https://kaotiyun.com/show/8rxi777K
0

最新回复(0)