leetcode刷题笔记一百零七题 二叉树的层次遍历II

leetcode刷题笔记一百零七题 二叉树的层次遍历II

源地址:107. 二叉树的层次遍历 II

问题描述:

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

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

3

/
9 20
/
15 7
返回其自底向上的层次遍历为:

[
[15,7],
[9,20],
[3]
]

/**
本题与102题二叉树的层次遍历思路基本一致,利用size确定每层元素
针对自底向上打印结果,可以使用返回res.reverse 或者 将元素插入res头部
*/
/**
 * Definition for a binary tree node.
 * class TreeNode(var _value: Int) {
 *   var value: Int = _value
 *   var left: TreeNode = null
 *   var right: TreeNode = null
 * }
 */
import scala.collection.mutable
import util.control.Breaks._
object Solution {
    def levelOrderBottom(root: TreeNode): List[List[Int]] = {
        var res = new mutable.ListBuffer[List[Int]]()
        val queue = new mutable.Queue[TreeNode]()
        queue.enqueue(root)

        while (queue.isEmpty == false){
            val queueSize = queue.size
            val floorRes = new mutable.ListBuffer[Int]()
            for (i<- 0 until queueSize){
                val tempNode = queue.dequeue
                if (tempNode != null){
                    floorRes += tempNode.value
                    queue.enqueue(tempNode.left)
                    queue.enqueue(tempNode.right)
                } 
            }
            if (floorRes.size > 0) floorRes.toList  +=: res
            
        }
        return res.toList
    }
}
posted @ 2020-08-05 16:36  ganshuoos  阅读(88)  评论(0编辑  收藏  举报