迭代
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
int sum=0;
if(root==null){
return 0;
}
TreeNode tn=root;
Queue<TreeNode> qu=new LinkedList<>();
qu.offer(tn);
while(!qu.isEmpty()){
int le=qu.size();
while(le>0){
tn=qu.poll();
if(tn.left!=null){
qu.offer(tn.left);
if(tn.left.left==null&&tn.left.right==null){
sum+=tn.left.val;
}
}
if(tn.right!=null){
qu.offer(tn.right);
}
le--;
}
}
return sum;
}
}
class Solution(object):
def sumOfLeftLeaves(self, root):
sum=0
if root is None:
return sum
tn=root
qu=collections.deque()
qu.append(tn)
while qu:
le=len(qu)
while le>0:
tn=qu.popleft()
if tn.left:
qu.append(tn.left)
if tn.left.left is None and tn.left.right is None:
sum+=tn.left.val
if tn.right:
qu.append(tn.right)
le-=1
return sum
递归(本方法非原创,来自代码随想录)
递归(本方法非原创,来自代码随想录)
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if(root==null){
return 0;
}
int rightSum=sumOfLeftLeaves(root.right);
int leftSum=sumOfLeftLeaves(root.left);
int sum=rightSum+leftSum;
if(root.left!=null&&root.left.left==null&&root.left.right==null){
sum=rightSum+leftSum+root.left.val;
}
return sum;
}
}
递归(本方法非原创,来自代码随想录)
class Solution(object):
def sumOfLeftLeaves(self, root):
if root is None:
return 0
rightSum=self.sumOfLeftLeaves(root.right)
leftSum=self.sumOfLeftLeaves(root.left)
sum=rightSum+leftSum
if root.left and root.left.left is None and root.left.right is None:
sum=rightSum+leftSum+root.left.val
return sum