lintcode481-二叉樹葉子節點之和

  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);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章