剑指offer:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
这道题的简单思路就是每遍历一个节点后将其值在target中减掉。题目中的路径要求我理解的是,这个路径必须从树的根节点出发,经过向下的子节点一直到没有值位置为止。
首先在方法外定义了path与data用于保存路径数据,这样可以使每次递归调用可以继续使用上次的遍历数据。
程序结束的情况是,找到了正确的路径或者遍历到底部后仍不是正确的路径。
难点1:
if(target==0&&root.right==null&&root.left==null){
path.add(new ArrayList<Integer>(data));
}
判断条件不难理解。其中path.add这句可以分解成如下几句:
ArrayLi