
求第一条最长路径长度并输出路径
利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度
再调用求路径长度的函数判断指针走向输出路径
int LongestPath(BiTree *T){ //求出当前二叉树的最长路径
if(T0) return 0;
if(T->lchild0&&T->rchild0) return 1;
int L=LongestPath(T->lchild);
int R=LongestPath(T->rchild);
return (L>R?L:R)+1;
}
void leftLong(BiTree *T){ //输出路径函数
if(T0) return;
printf(" %c",T->data); //相当于先序遍历
int L=LongestPath(T->lchild);//计算左子树的高度
int R=LongestPath(T->rchild);//计算右子树的高度
if(L>=R) leftLong(T->lchild);//根据左右子树的高度决定走向
else leftLong(T->rchild);
}
这篇博客介绍了如何使用递归遍历的方法来寻找二叉树中的最长路径。首先通过`LongestPath`函数计算当前节点的最大路径长度,然后通过`leftLong`函数输出这条最长路径。算法主要依据左右子树的高度来决定路径走向。
907

被折叠的 条评论
为什么被折叠?



