Skip to content

Commit 2e877cf

Browse files
committed
添加 二叉树的迭代遍历 Swift版本
1 parent 3fb3573 commit 2e877cf

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

problems/二叉树的迭代遍历.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,79 @@ var postorderTraversal = function(root, res = []) {
454454
};
455455
```
456456

457+
Swift:
458+
459+
> 迭代法前序遍历
460+
```swift
461+
func preorderTraversal(_ root: TreeNode?) -> [Int] {
462+
var res = [Int]()
463+
if root == nil {
464+
return res
465+
}
466+
var stack = [TreeNode]()
467+
stack.append(root!)
468+
while !stack.isEmpty {
469+
let node = stack.popLast()!
470+
res.append(node.val)
471+
if node.right != nil {
472+
stack.append(node.right!)
473+
}
474+
if node.left != nil {
475+
stack.append(node.left!)
476+
}
477+
}
478+
return res
479+
}
480+
```
481+
482+
> 迭代法中序遍历
483+
```swift
484+
func inorderTraversal(_ root: TreeNode?) -> [Int] {
485+
var res = [Int]()
486+
if root == nil {
487+
return res
488+
}
489+
var stack = [TreeNode]()
490+
var cur: TreeNode? = root
491+
while cur != nil || !stack.isEmpty {
492+
if cur != nil {
493+
stack.append(cur!)
494+
cur = cur!.left
495+
} else {
496+
cur = stack.popLast()
497+
res.append(cur!.val)
498+
cur = cur!.right
499+
}
500+
}
501+
return res
502+
}
503+
```
504+
505+
> 迭代法后序遍历
506+
```swift
507+
func postorderTraversal(_ root: TreeNode?) -> [Int] {
508+
var res = [Int]()
509+
if root == nil {
510+
return res
511+
}
512+
var stack = [TreeNode]()
513+
stack.append(root!)
514+
// res 存储 中 -> 右 -> 左
515+
while !stack.isEmpty {
516+
let node = stack.popLast()!
517+
res.append(node.val)
518+
if node.left != nil {
519+
stack.append(node.left!)
520+
}
521+
if node.right != nil {
522+
stack.append(node.right!)
523+
}
524+
}
525+
// res 翻转
526+
res.reverse()
527+
return res
528+
}
529+
```
457530

458531
-----------------------
459532
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
 (0)