原题
https://leetcode.cn/problems/binary-tree-level-order-traversal/
思路
广度优先搜索
复杂度
时间:O(n)
空间:O(n)
Python代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
ans = []
if not root:
return ans
curr_level = [root]
while curr_level:
l = []
next_level = []
for node in curr_level:
l.append(node.val)
if node.left:
next_level.append(node.left)
if node.right:
next_level.append(node.right)
ans.append(l)
curr_level = next_level
return ans
Go代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
var ans [][]int
if root == nil {
return ans
}
curr_level := []*TreeNode{root}
for len(curr_level) > 0 {
var l []int
next_level := []*TreeNode{}
for _, node := range curr_level {
l = append(l, node.Val)
if node.Left != nil {
next_level = append(next_level, node.Left)
}
if node.Right != nil {
next_level = append(next_level, node.Right)
}
}
ans = append(ans, l)
curr_level = next_level
}
return ans
}
3153

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



