/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int count=0;
public int sumOfLeftLeaves(TreeNode root) {
if(root==null){
return 0;
}
//递归 时空复杂度O(n)
if(root.left!=null&&root.left.left==null&&root.left.right==null){
count+=root.left.val;
sumOfLeftLeaves(root.right);
}else{
sumOfLeftLeaves(root.left);
sumOfLeftLeaves(root.right);
}
return count;
}
}
思路
- 想要遍历每棵树的左叶子节点。先利用一棵树来进行抽象
要添加的节点值为2和6,如何判断这个节点是左叶子节点,从1来看,只要当前节点左节点不为0,并且左节点是叶子节点就可以。ok这时候将这个值保存下来就可以。
为什么保存这个节点值之后需要递归右节点呢,看下面的这个图就知道了。
文章每周持续更新,你的关注就是我的动力,本文 GitHub JavaStudy 欢迎Star和完善,里面放了学习的一些资料,希望我们一起学习冲进大厂。争取一个礼拜两篇博客,每日一道算法题!