迭代法
采用先序遍历。搞清楚条件就解决了:左孩子不空并且左孩子的左右孩子都为空。
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
//首先得是左孩子,然后它的左右孩子都为空
//采用前序遍历
int result = 0;
if(root == null) return 0;//result不变
Stack<TreeNode> s = new Stack<TreeNode>();
s.push(root);
while(!s.isEmpty()){
TreeNode curNode = s.pop();
if(curNode.left!=null && curNode.left.left==null && curNode.left.right == null){
result += curNode.left.val;
}
if(curNode.right!=null) s.push(curNode.right);
if(curNode.left!=null) s.push(curNode.left);
}
return result;
}
}
递归法
同样是前序遍历。
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if (root == null) return 0;
int midValue = 0;
if (root.left != null && root.left.left == null && root.left.right == null) {
midValue = root.left.val;
}
return midValue + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
}
}