百战尚学tang web前端全系列
class Solution {
func postorderTraversal(_ root: TreeNode?) -> [Int] {
var res: [Int] = []
if nil == root {
return res }
var p1: TreeNode? = root var p2: TreeNode? = nil
while (nil != p1) {
p2 = p1?.left
if (nil != p2) {
while (nil != p2?.right && p2?.right != p1) {
p2 = p2?.right
}
if (nil == p2?.right) {
p2?.right = p1
p1 = p1?.left
continue
} else {
p2?.right = nil
addPath(&res, &p1!.left)
}
}
p1 = p1?.right
}
var tempNode: TreeNode? = root addPath(&res, &tempNode)
return res }