File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -71,6 +71,39 @@ class Solution {
71
71
}
72
72
```
73
73
74
+ Swift Code:
75
+
76
+ ``` swift
77
+ class Solution {
78
+ func postorderTraversal (_ root : TreeNode? ) -> [Int ] {
79
+ var list:[Int ] = []
80
+ var stack:[TreeNode] = []
81
+ var cur = root, preNode: TreeNode?
82
+ while ! stack.isEmpty || cur != nil {
83
+ // 和之前写的中序一致
84
+ while cur != nil {
85
+ stack.append (cur! )
86
+ cur = cur! .left
87
+ }
88
+ // 1.出栈,可以想一下,这一步的原因。
89
+ cur = stack.popLast ()
90
+ // 2.if 里的判断语句有什么含义?
91
+ if cur! .right === nil || cur! .right === preNode {
92
+ list.append (cur! .val )
93
+ // 更新下 preNode,也就是定位住上一个访问节点。
94
+ preNode = cur
95
+ cur = nil
96
+ } else {
97
+ // 3.再次压入栈,和上面那条 1 的关系?
98
+ stack.append (cur! )
99
+ cur = cur! .right
100
+ }
101
+ }
102
+ return list
103
+ }
104
+ }
105
+ ```
106
+
74
107
当然也可以修改下代码逻辑将 ` cur = stack.pop() ` 改成 ` cur = stack.peek() ` ,下面再修改一两行代码也可以实现,这里这样写是方便动画模拟,大家可以随意发挥。
75
108
76
109
时间复杂度 O(n), 空间复杂度O(n)
You can’t perform that action at this time.
0 commit comments