给定二叉树的根节点 root
,返回所有左叶子之和。
思路:遍历树,寻找左叶子节点;
如果判断是左叶子节点,就更新sum。
public static int sumOfLeftLeaves(TreeNode root){
int sum=0;
sum=compute(root,sum);
return sum;
}
//计算每个子树的左叶子节点的和
public static int compute(TreeNode root,int sum){
if(root==null) return sum;
//前序遍历,并判断节点是否为左叶子节点
TreeNode preNode=root; //父节点
//节点存在左孩子
TreeNode node=preNode.left;
if(node!=null){
//节点的左孩子节点为叶子节点
if(node.left==null && node.right==null){
sum=sum+node.val;
}
}
sum=compute(root.left,sum);
sum=compute(root.right,sum);
return sum;
}