问题描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为整数的所有路径。路径定义为从树的根结点开始往下一直到叶子结点所经过的结点形成一条路径
思路分析
从问题描述知道,前序遍历符合从根结点遍历,所有可用此方法遍历,同时可以设置两个集合,一个用来保存每次遍历的结点,一个用来记录每次访问过的结点路径,如果等于和的话,就将结点路径加入,如果不等于,则看是否有左右孩子,在递归遍历,最后如果,返回上层,每一次都要删掉保存的结点
码上有戏
|
|
测试:
TreeNode a=new TreeNode(10);
TreeNode b=new TreeNode(5);
TreeNode c=new TreeNode(12);
TreeNode d=new TreeNode(4);
TreeNode e=new TreeNode(7);
a.left=b;
a.right=c;
b.left=d;
b.right=e;
ArrayList> pathNodes=new ConstructBinaryTree().findPath(a, 19);
for(ArrayListlist:pathNodes)
for(Integer val:list){
System.out.println(val+” “);
}