二叉树根节点到叶子节点和为指定值的路径集问题
分析
寻找满足指定值的路径集转换为二叉树的前序遍历(根-左-右)
使用回朔(递归)的方式实现
/**
*
* @param root TreeNode类
* @param sum int整型
* @return int整型ArrayList<ArrayList<>>
*/
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
ArrayList<Integer> list = new ArrayList<Integer>();
public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) {
if(root == null)return res;
dsf(root,sum,0);
return res;
}
public void dsf(TreeNode root, int sum,int count){
//设置递归终止条件
if(root == null)return ;
list.add(root.val);
count += root.val;
if(root.left == null && root.right == null){
if(count == sum)res.add(new ArrayList<>(list));
}else{
dsf(root.left,sum,count);
dsf(root.right,sum,count);
}
list.remove(list.size()-1);
}
- 上一篇: 矩阵的最小路路径
- 下一篇: 链表求和及字符串求和