题目描述:输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
说明:这题真的看不懂,先把别人写的粘过来,日后再研究吧。
方法一:
这题有一个重点,就是 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径, 所以我们要确保最后一个加进去Arraylist的节点为叶节点,即确保当前遍历的节点无左孩子也无右孩子。
代码:
方法二:
注意题的要义是根结点到叶子结点值为和才是路径,所以在这次的题目中不断对树的每一个孩子进行一个新的状态的递归求和,当回溯的时候,就需要进行状态重置,而状态重置在本题中需要进行两次!
而且分外注意!对于叶子结点要额外处理,叶子结点的左右孩子都为 null,对于一条正确的路径:不能让它回溯两次,因为:
可以看到回得到两次答案,重复了,所以要判断一下叶子结点的情况,其他非叶子结点就回溯两次
原文:https://www.cnblogs.com/lf6688/p/13580779.html