102.M 二叉树的层序遍历

Problem: 102. 二叉树的层序遍历

思路

层次遍历

Code

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
	if root == nil {
		return nil
	}

	var ans [][]int
	q := []*TreeNode{root}
	for len(q) > 0 {
		size := len(q)
		var row []int
		for size > 0 {
			node := q[0]
			q = q[1:]
			row = append(row, node.Val)
			if node.Left != nil {
				q = append(q, node.Left)
			}
			if node.Right != nil {
				q = append(q, node.Right)
			}
			size--
		}
		ans = append(ans, row)
	}

	return ans
}

Last updated

Was this helpful?