0
点赞
收藏
分享

微信扫一扫

【二叉树】二叉树的层序遍历 II


0x00 题目

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

0x01 思路

先 ​​自顶向下​​​ 遍历
得到最终结果后
再把遍历的结果 ​​​倒序​​ 即可

0x02 解法

语言:​​Swift​

树节点:​​TreeNode​

public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}

解法:

func levelOrderBottom(_ root: TreeNode?) -> [[Int]] {
guard let root = root else { return [] }

// 存放结果
var res: [[Int]] = []
// 存放节点
var queue: [TreeNode] = [root]

while !queue.isEmpty {
// 存储下一层节点
var tmp: [TreeNode] = []

// 存储当前层的节点值
var arr: [Int] = []

while !queue.isEmpty {
let node = queue.removeFirst()
arr.append(node.val)

// 收集下层节点
if let left = node.left {
tmp.append(left)
}
if let right = node.right {
tmp.append(right)
}
}

queue = tmp
res.append(arr)
}

// 倒序
res.reverse()
return res
}


举报

相关推荐

0 条评论