[Leetcode]3.I. 从上到下打印二叉树

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

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

    3
   / \
  9  20
      /  \
    15  7

返回:[3,9,20,15,7]

 

算法思想:使用一个队列来保存遍历到的结点,队列的实现方法是每次遍历都将头结点读取后剔除出数组,将该结点的值存入一个用于存储结果的数组中,并将该结点的左右子结点(如果有)放入数组中.直到数组为空结束.

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) []int {
    var r []int
    var k []*TreeNode
    k = append(k,root)
    var node *TreeNode
    for len(k)!=0{
        node = k[0]
        k = k[1:]
        if node != nil{
            r = append(r,node.Val)
            if node.Left!=nil{
                k = append(k,node.Left)
            }
            if node.Right!=nil{
                k = append(k,node.Right)
            }
        }
    }
    return r
}

 题目来源:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/

posted @ 2021-10-17 17:09  梦想是能睡八小时的猪  阅读(41)  评论(0)    收藏  举报