swift二叉树遍历搜索
在Swift中,我们可以使用类来表示二叉树。二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。
1. 前序遍历
前序遍历的顺序是先访问根节点,然后递归地访问左子树和右子树。
```swift
class TreeNode {
var val: Int?
var leftChild?: TreeNode
var rightChild?: TreeNode
init(val: Int) {
self.val = val
}
}
func preorderTraversal(root: TreeNode?) -> [Int] {
guard let rootNode = root else {
return []
}
let result = [rootNode.val]
result += preorderTraversal(rootNode.leftChild)
result += preorderTraversal(rootNode.rightChild)
return result
}
```
2. 中序遍历
中序遍历的顺序是先递归地访问左子树,然后访问根节点,最后递归地访问右子树。
```swift
class TreeNode {
var val: Int?
var leftChild?: TreeNode
var rightChild?: TreeNode
init(val: Int) {
self.val = val
}
}
func inorderTraversal(root: TreeNode?) -> [Int] {
guard let rootNode = root else {
return []
}
let result = inorderTraversal(rootNode.leftChild)
result.append(rootNode.val)
result += inorderTraversal(rootNode.rightChild)
return result
}
```
3. 后序遍历
后序遍历的顺序是先递归地访问左子树,然后递归地访问右子树,最后访问根节点。
```swift
class TreeNode {
var val: Int?
var leftChild?: TreeNode
var rightChild?: TreeNode
init(val: Int) {
self.val = val
}
}
func postorderTraversal(root: TreeNode?) -> [Int] {
guard let rootNode = root else {
return []
}
let result = postorderTraversal(rootNode.leftChild)
result += postorderTraversal(rootNode.rightChild)
result.append(rootNode.val)
return result
}
```
10.07KB
文件大小:
评论区