面试题32 - II. 从上到下打印二叉树 II

1每次把所以的数组节点都出栈
2然后把所以的子节点元素都入栈
3直到所有栈为空
package mainimport "fmt"type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode}func levelOrder(root *TreeNode) [][]int {if root == nil {return nil}nodes := make([]*TreeNode, 0)nodes = append(nodes, root)var res [][]intfor len(nodes) > 0 {var nodeList []*TreeNodevar values []intfor i := 0; i < len(nodes); i++ {node := nodes[i]if node.Left != nil {nodeList = append(nodeList, node.Left)}if node.Right != nil {nodeList = append(nodeList, node.Right)}values = append(values, node.Val)}if len(values) > 0 {res = append(res, values, )}nodes = append(nodes[len(nodes):], nodeList...)}return res}func main() {three := &TreeNode{Val: 3}nine := &TreeNode{Val: 9}three.Left = ninetwenty := &TreeNode{Val: 20}three.Right = twentyfifteen := &TreeNode{Val: 15}twenty.Left = fifteensevern := &TreeNode{Val: 7}twenty.Right = severnfmt.Println(levelOrder(three))}

