百戰(zhàn)尚學(xué)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 ? ?}
? ?