给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
public Listpython代码:largestValues(TreeNode root) { if(root==null){ return new ArrayList<>(); } List res = new ArrayList<>(); //队列中保存着每一行的节点 Queue qList = new ArrayDeque<>(); qList.add(root); while (!qList.isEmpty()){ //size 为一层节点的数目 int size = qList.size(); int max=Integer.MIN_VALUE; while (size>0){ size--; TreeNode cur = qList.poll();//弹出一个节点,并将此节点的孩子加入队列但不更新size if(cur.left!=null){ qList.offer(cur.left); } if(cur.right!=null){ qList.offer(cur.right); } max=max>cur.val?max:cur.val; } res.add(max); } return res; }
class Solution(object):
def largestValues(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
nodes = []
res = []
if root:
nodes.append(root)
while len(nodes) > 0:
size = len(nodes)
m = int(-math.pow(2, 31))
while size > 0:
size -= 1
cur = nodes.pop(0)
m = cur.val if cur.val > m else m
if cur.left:
nodes.append(cur.left)
if cur.right:
nodes.append(cur.right)
res.append(m)
return res



