golang刷leetcode 技巧(17)从上到下打印二叉树

2022-08-02 18:41:15 浏览数 (1)

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:

给定二叉树: [3,9,20,null,null,15,7],

3

/

9 20

/

15 7

返回:

[3,9,20,15,7]

提示:

节点总数 <= 1000

解题思路:

1,这是一个二叉树和队列结合的题目

2,我们从根节点开始

3,依次进入队列每个节点和左右孩子节点

4,每次弹出首节点返回

5,需要注意根节点为空的情况

6,golang可以用slice模仿队列

golang小知识积累:

var a []int

a:=[]int{}

a:=make([]int,0)

这3种声明方式,哪一种更优?

答案是第一种

原因,第二种和第3种都有空间分配,第一种没有

不分配内存的还有一种变量,这就要说到一个特殊变量:匿名变量 ,也称作占位符,或者空白标识符,用下划线表示。

匿名变量,优点有三:

  • 不分配内存,不占用内存空间
  • 不需要你为命名无用的变量名而纠结
  • 多次声明不会有任何问题

代码实现

代码语言:javascript复制
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) []int {
 var r []int
 if root==nil{
     return r
 } 
 var q []*TreeNode
 q=append(q,root)

 for len(q)>0{
     h:=q[0]
     r=append(r,h.Val)
    if h.Left!=nil{
        q=append(q,h.Left)
    }
    if h.Right!=nil{
        q=append(q,h.Right)
    }
     if len(q)==1{
         return r
     }else{
          q=q[1:]
     }
 }
 return r
}

0 人点赞