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 } ```
zip 文件大小:10.07KB