模板
JS语言var levelOrder = function(root) { //用队列解决
let res = [], queue = []
queue.push(root)
if (root==null) return res
while(queue.length!==0){
let length=queue.length//当前的节点长度
let curlevel=[]
for(let i=0;i//保存当前层的长度,然后处理当前层
let node=queue.shift()//当前层的节点,把第一个数弹出
curlevel.push(node.val)//前序:中左右
//找到下一层级的节点
node.left&&queue.push(node.left)
node.right&&queue.push(node.right)
}
res.push(curlevel)
}
return res
};
==push()和unshift()==是进入数组的方法,其中push()是从后面加入,unshift()是从前面加入。
使用push(“blue”,“purple”),结果是[“green”,“red”,“orange”,“blue”,“purple”],使用unshift(“blue”,“purple”),结果是[“blue",“purple”,“green”,“red”,“orange”];
==shift()和pop()==返回的是弹出的元素,其中shift()返回的是前面的元素,
pop()返回的是后面的元素[“green”,“red”,“orange”,“blue”],使用shift(),弹出的是“green”,使用pop(),弹出的是“blue”。
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
results = [] #存结果
if not root:
return results
from collections import deque
que = deque([root])
while que:
size=len(que)
result =[] #存单层
for _ in range(size):#单个节点的下一层
cur = que.popleft()
result.append(cur.val)
if cur.left:
que.append(cur.left)
if cur.right:
que.append(cur.right)
results.append(result)



