zoukankan      html  css  js  c++  java
  • #leetcode404.所有左叶子节点之和

     这道题的要求是所有左叶子节点之和,即只要是左节点就应该被算在内,题解的答案真的是非常的简单粗暴,看一下:

    public int sumOfLeftLeaves(TreeNode root) {
    
            if(root == null)
                return 0;
            if(isLeaf(root.left))
                return root.left.val + sumOfLeftLeaves(root.right);
    
            return sumOfLeftLeaves(root.left) + sumOfLeftLeaves( root.right);
        }
    
        public boolean isLeaf(TreeNode head) {
            if ( head == null)
                return false;
    
            return head.left==null && head.right ==null;
        }

    不得不说,这道题的题解真的是太简单粗暴了,我什么时候能把递归用成这样就好了!

    如果root是null的话 没有左子节点,所以直接返回0;

    同样也是递归的出口,就是如果这个节点的左节点/右节点为null了,返回0就可以了,不用继续递归了。

    而下面这句 if(isLeaf(root.left)) 就是在往下递归的过程中,碰到了左子节点就加起来,然后这时候只需要递归右边的节点就ok了,

    如果不是左子节点的话,那么需要将左右都看成是本函数空间的根节点递归的进行计算。太妙了!

    这段代码其实是从上往下递归计算的,和之前最大最小路径的从下往上递归计算思路上有所区别;

  • 相关阅读:
    DataGrip for Mac破解步骤详解 亲测好用
    git 之路
    linux用户管理
    virtualenvwrappers pipreqs 踩坑
    pycharm 快捷键
    kubernetes(k8s)之K8s部署多种服务yaml文件
    centos下彻底删除mysql的方法
    vi 和vim 的区别
    Django中related_name作用
    Windows CMD命令大全
  • 原文地址:https://www.cnblogs.com/kerwins-AC/p/14458668.html
Copyright © 2011-2022 走看看