1. 程式人生 > >leetcode515_在每個樹行中找最大值

leetcode515_在每個樹行中找最大值

您需要在二叉樹的每一行中找到最大的值。

示例:

輸入: 

          1
         / \
        3   2
       / \   \  
      5   3   9 

輸出: [1, 3, 9]

 

 

思路:

層序遍歷的思想  在同一層找最大的

List<Integer> res = new ArrayList<Integer>();    
		    if (root==null) {
				return res;
			}
		    
		    Queue<TreeNode> queue = new LinkedList<TreeNode>();
	        queue.add(root);
	       
	        while(queue.size() != 0){
	            int size = queue.size();       //每層的數目量
	            int max = Integer.MIN_VALUE;   //用於儲存每層的最大值
	            for(int i = 0; i < size; i++){
	                TreeNode cur = queue.poll();
	                max=Math.max(cur.val, max);
	                if(cur.left!= null)queue.add(cur.left);
	                if(cur.right!=null)queue.add(cur.right);
	            }
	            res.add(max);
	        }	
		return res;