zoukankan      html  css  js  c++  java
  • 刷题感悟- 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);
    }
  • 相关阅读:
    Vijos / 题库 / 输油管道问题
    军事机密(Secret.pas)
    1164 统计数字
    1142 奖学金 sort做法
    1487 大批整数排序
    1487 大批整数排序
    1545 最简单排序
    1470 数列处理
    1683 车厢重组
    spin.js无图片实现loading进度条,支持但非依赖jquery
  • 原文地址:https://www.cnblogs.com/zslzz/p/7235515.html
Copyright © 2011-2022 走看看