求第一条最长路径长度并输出路径
- 算法思想
利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度
再调用求路径长度的函数判断指针走向输出路径
2023.8.8更新:
评论区大佬指正:路径长度=树的高度-1
int LongestPath(BiTree *T){ //求出当前二叉树的最长路径
if(T==0) return 0;
if(T->lchild==0&&T->rchild==0) return 1;
int L=LongestPath(T->lchild);
int R=LongestPath(T->rchild);
return L>R?L:R; //改前:(L>R?L:R)+1
}
void Long(BiTree *T){ //输出路径函数
if(T==0) return;
printf(" %c",T->data); //相当于先序
int L=LongestPath(T->lchild);//计算左子树的高度
int R=LongestPath(T->rchild);//计算右子树的高度
if(L>=R) Long(T->lchild);//根据左右子树的高度决定走向
else Long(T->rchild);
}
- 运行结果