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