求第一条最长路径长度并输出路径
利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度
再调用求路径长度的函数判断指针走向输出路径
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);
}