404. 左葉子之和
知識點:二叉樹
題目描述
計算給定二叉樹的所有左葉子之和。。
示例
3
/ \
9 20
/ \
15 7
在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24
解法一:DFS
函式功能:左葉子之和
1.終止條件:root為空,返回0;
2.能做什麼:判斷自己的左節點是否為空,不為空的話判斷它是不是葉子節點,是的話就加到sum上;不是的話那就接著去看子樹;
3.什麼時候做:從上到下,先弄自己的,再去弄子樹的,前序;
做這類二叉樹的題目,多半是遍歷樹,遍歷的過程中進行一些計算。
我們可以先序遍歷這個樹,遍歷的同時判斷當前點是否有左孩子,如果有左孩子,那左孩子是不是葉子節點,都滿足的話那就是左葉子節點,累加。然後直到遍歷結束;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
int sum = 0;
public int sumOfLeftLeaves(TreeNode root) {
if(root == null) return 0;
if(root.left != null && root.left.left == null && root.left.right == null){
sum += root.left.val;
}
sumOfLeftLeaves(root.left);
sumOfLeftLeaves(root.right);
return sum;
}
}