首页 > 其他 > 详细

刷题感悟- Binary Tree Path Sum

时间:2017-07-25 18:55:59      阅读:250      评论:0      收藏:0      [点我收藏+]

弱弱的吐个槽 太久不刷题果然会生疏啊 三天不练手生 古人诚不欺我也

初看该题 很明显就是一个有记录的遍历 先序遍历,遍历过程中保存路径即可 

做该题中 自己主要犯得错误有:

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

原文:http://www.cnblogs.com/zslzz/p/7235515.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!