LeetCode 404. 左叶子之和 java题解
https://leetcode.cn/problems/sum-of-left-leaves/
class Solution {
int sum=0;
public int sumOfLeftLeaves(TreeNode root) {
if(root==null) return 0;
TreeNode head=new TreeNode(0);//伪头节点
head.right=root;//记录当前节点的上一个结点
find(root,head);
return sum;
}
public void find(TreeNode root,TreeNode pre){
if(root==null) return;
if(root.left==null&&root.right==null){//叶子结点
if(pre.left==root){//是父亲节点的左孩子
sum+=root.val;
}
}
find(root.left,root);
find(root.right,root);
}
}
/*
叶子结点,并且是左叶子。
如何判断左叶子?记录上一个结点,如果上一个结点的左孩子是他,他就是左叶子。
*/
另一种思路判断左叶节点:
if (node->left != NULL && node->left->left == NULL && node->left->right == NULL) {
左叶子节点处理逻辑
}