Question:
計算二叉樹的葉子節點之和
樣例1:
輸入:
1
/ \
2 3
/
4
輸出:7
樣例2:
輸入:
1
\
3
輸出:3
Solution:
關鍵在於識別所有的葉子節點,即左右子樹都爲空,就把葉子節點加一下
本題採用廣度優先搜索機制,每次節點的時候判斷一下是否爲葉子節點
當然也可以採用遞歸
public class Q481_binaryTreeLeafSum {
public int leafSum(TreeNode root) {
if(root == null)
return 0;
int result = 0;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()) {
TreeNode temp = queue.poll();
if(temp.left == null && temp.right == null)
result += temp.val;
if(temp.left != null)
queue.offer(temp.left);
if(temp.right != null)
queue.offer(temp.right);
}
return result;
}
@Test
public void test() {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
int result = leafSum(root);
System.out.println(result);
}
}