方法1:如果有父节点链接,那么遍历每个节点回溯路径的和即可。

方法2:根据二叉树的先根遍历思想,通过一个栈保存从根到当前节点的路径,每遍历一个节点,都从sum值中减去此节点的权值,此点遍历结束后,再从栈中弹出此节点,并在sum中加上此节点的权值。当sum为零且当前节点为叶子节点时,打印栈中保存的路径。

递归如果树非空则要么是左子树中的最大距离,要么是右子树中的最大距离,要么是左子树到根距离与右子树到根距离之和。前面的两个递归即可算出后面所需的到根距离。

使用后根遍历的思想进行比较,先递归下去,然后判断子树的高度差不大于1即可。