二叉树-求第一条最长路径长度并输出路径

求第一条最长路径长度并输出路径

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

你可能感兴趣的:(笔记,二叉树,算法,指针,数据结构)