golang中怎么利用leetcode从上到下打印二叉树

本篇文章给大家分享的是有关golang中怎么利用leetcode从上到下打印二叉树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

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

例如:

给定二叉树: [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种都有空间分配,第一种没有

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

匿名变量,优点有三:

  • 不分配内存,不占用内存空间

  • 不需要你为命名无用的变量名而纠结

  • 多次声明不会有任何问题


代码实现

/** * 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}

以上就是golang中怎么利用leetcode从上到下打印二叉树,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。