From 2e877cf1e838dbfd1d48b9a61d62562d14bcb592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=81=E5=AE=A2=E5=AD=A6=E4=BC=9F?= Date: Mon, 27 Dec 2021 18:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=BA=8C=E5=8F=89?= =?UTF-8?q?=E6=A0=91=E7=9A=84=E8=BF=AD=E4=BB=A3=E9=81=8D=E5=8E=86=20Swift?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/二叉树的迭代遍历.md | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/problems/二叉树的迭代遍历.md b/problems/二叉树的迭代遍历.md index a139652c..4cb94cb5 100644 --- a/problems/二叉树的迭代遍历.md +++ b/problems/二叉树的迭代遍历.md @@ -454,6 +454,79 @@ var postorderTraversal = function(root, res = []) { }; ``` +Swift: + +> 迭代法前序遍历 +```swift +func preorderTraversal(_ root: TreeNode?) -> [Int] { + var res = [Int]() + if root == nil { + return res + } + var stack = [TreeNode]() + stack.append(root!) + while !stack.isEmpty { + let node = stack.popLast()! + res.append(node.val) + if node.right != nil { + stack.append(node.right!) + } + if node.left != nil { + stack.append(node.left!) + } + } + return res +} +``` + +> 迭代法中序遍历 +```swift +func inorderTraversal(_ root: TreeNode?) -> [Int] { + var res = [Int]() + if root == nil { + return res + } + var stack = [TreeNode]() + var cur: TreeNode? = root + while cur != nil || !stack.isEmpty { + if cur != nil { + stack.append(cur!) + cur = cur!.left + } else { + cur = stack.popLast() + res.append(cur!.val) + cur = cur!.right + } + } + return res +} +``` + +> 迭代法后序遍历 +```swift +func postorderTraversal(_ root: TreeNode?) -> [Int] { + var res = [Int]() + if root == nil { + return res + } + var stack = [TreeNode]() + stack.append(root!) + // res 存储 中 -> 右 -> 左 + while !stack.isEmpty { + let node = stack.popLast()! + res.append(node.val) + if node.left != nil { + stack.append(node.left!) + } + if node.right != nil { + stack.append(node.right!) + } + } + // res 翻转 + res.reverse() + return res +} +``` -----------------------