首页 > 代码库 > 刷题感悟- Binary Tree Path Sum
刷题感悟- Binary Tree Path Sum
弱弱的吐个槽 太久不刷题果然会生疏啊 三天不练手生 古人诚不欺我也
初看该题 很明显就是一个有记录的遍历 先序遍历,遍历过程中保存路径即可
做该题中 自己主要犯得错误有:
1.忽视了List的引用传递;
2.每个节点压入路径 到了叶子时需要弹出
3.递归本质上是开启多个kernel层层嵌套 一直执行完剩下的
4.注意递归结束条件
5.treepath未递归时已保存根节点的信息
递归代码如下:
public void preOrder(TreeNode root,int target, List<List<Integer>> result,List<Integer> treepath,Integer sum){ if(root.left==null&&root.right==null&&sum.equals(target)){ result.add(new ArrayList<Integer>(treepath)); } if(root.left!=null){ treepath.add(root.left.val); preOrder(root.left,target,result,treepath,sum+root.left.val); } if(root.right!=null){ sum = sum+root.right.val; treepath.add(root.right.val); preOrder(root.right,target,result,treepath,sum); } treepath.remove(treepath.size()-1); }
刷题感悟- Binary Tree Path Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。