昨天打卡了银泰创意城的绿茶餐厅
口味还行
我尤其钟爱绿茶烤肉这道菜
虽然没吃完哈哈哈哈哈哈哈
不多说,直接上图
后面一道菜是豆腐炖鸡,不腻!也很好吃
102-二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
思路:
这一题是完成二叉树的层次遍历,比较简单。我的思路是采用for循环用一个列表node_list专门保存二叉树每一层的节点,然后依次遍历每一层的节点,获取其节点值并保存。很easy,代码一看便知。
代码如下:
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
# 该列表用来保存层次遍历的最终结果
pre_list = []
# 该列表用来保存每一层的节点值
level_node = [root]
if root is None:
return []
while len(level_node) > 0:
# 该列表用来保存每一层遍历的结果
level_list = []
# 该列表用来保存当前层的下一层节点集合
next_node = []
# 依次遍历当前层的每个节点
for node in level_node:
level_list.append(node.val)
if node.left and node.left.val is not None:
next_node.append(node.left)
if node.right and node.right.val is not None:
next_node.append(node.right)
pre_list.append(level_list)
level_node = next_node
return pre_list
# 根据给定的数组创建二叉树
def createBTree(self, data, index=0):
if len(data) == 0:
return
pNode = None
if index < len(data):
pNode = TreeNode(data[index])
pNode.left = self.createBTree(data, 2*index+1)
pNode.right = self.createBTree(data, 2*index+2)
return pNode
if __name__ == "__main__":
data = [0,2,4,1,None,3,-1,5,1,None,6,None,8]
root = Solution().createBTree(data)
pre_root = Solution().levelOrder(root)
print(pre_root)
执行效率还是挺不错的,在90%以上。