对于任意一棵二叉树,要求出第一条最长的路径长度并输出此路径上各结点的值,可以使用以下方法:
定义一个全局变量 maxLength,用于存储当前找到的最长路径长度。令 maxLength 的初始值为 0。
定义一个变量 path,用于存储当前找到的最长路径上各结点的值。
在二叉树的每个结点处,递归地求出以该结点为根的子树中最长的路径长度。具体地,对于当前结点的左子结点,求出以该左子结点为根的子树中最长的路径长度;对于当前结点的右子结点,求出以该右子结点为根的子树中最长的路径长度。然后将这两条路径长度相加,再加上 1(因为当前结点还要算一次),得到以当前结点为根的子树中最长的路径长度。
在第 3 步中得到了以当前结点为根的子树中最长的路径长度之后,判断该长度是否大于 maxLength。如果是,则将 maxLength 设为该长度,同时更新 path,将 path 设为当前结点到根结点路径上各结点的值。
递归地处理完整