You need to find the largest value in each row of a binary tree.
Example:
Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]
题解:此题也比较简单,就是计算二叉树中每一行中的最大值。我直接采用层次遍历的方式,并且保存每一行的最大值放置于一个变量max中,然后就其保存在一个list中输出。
public class largestValues
{
public List<Integer> largestValues(TreeNode root)
{
List<Integer> list = new ArrayList<>();
if(root == null)
return list;
if(root.left == null && root.right == null)
{
list.add(root.val);
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int length = queue.size();
while(!queue.isEmpty())
{
int max = Integer.MIN_VALUE;
while(length-- > 0)
{
TreeNode node = queue.poll();
if(node.val > max)
max = node.val;
if(node.left != null)
queue.add(node.left);
if(node.right != null)
queue.add(node.right);
}
list.add(max);
length = queue.size();
}
return list;
}
}

被折叠的 条评论
为什么被折叠?



