Skip to content

Commit ef44b3f

Browse files
committed
添加 Swift 代码实现
1 parent f972620 commit ef44b3f

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

animation-simulation/二叉树/二叉树的前序遍历(Morris).md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,41 @@ class Solution {
103103
}
104104
```
105105

106+
Swift Code:
107+
108+
```swift
109+
class Solution {
110+
func preorderTraversal(_ root: TreeNode?) -> [Int] {
111+
var list:[Int] = []
112+
guard root != nil else {
113+
return list
114+
}
115+
var p1 = root, p2: TreeNode?
116+
while p1 != nil {
117+
p2 = p1!.left
118+
if p2 != nil {
119+
//找到左子树的最右叶子节点
120+
while p2!.right != nil && p2!.right !== p1 {
121+
p2 = p2!.right
122+
}
123+
//添加 right 指针,对应 right 指针为 null 的情况
124+
if p2!.right == nil {
125+
list.append(p1!.val)
126+
p2!.right = p1
127+
p1 = p1!.left
128+
continue
129+
}
130+
//对应 right 指针存在的情况,则去掉 right 指针
131+
p2!.right = nil
132+
} else {
133+
list.append(p1!.val)
134+
}
135+
//移动 p1
136+
p1 = p1!.right
137+
}
138+
return list
139+
}
140+
}
141+
```
142+
106143
好啦,今天就看到这里吧,咱们下期见!

0 commit comments

Comments
 (0)