class TreeNode: NSObject {
var val: Int = 0
var left: TreeNode?
var right: TreeNode?
override init() {}
init(val: Int, left: TreeNode?, right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
class BinaryTree {
///二叉树的前序遍历
///给定二叉树的根节点 root ,返回它节点值的 前序 遍历
func preorderTraversal(_ root: TreeNode?) -> [Int] {
guard let root = root else { return [] }
var list: [Int] = []
list.append(root.val)
list += preorderTraversal(root.left)
list += preorderTraversal(root.right)
return list
}
///二叉树的中序遍历
///给定一个二叉树的根节点 root ,返回它的 中序 遍历
func inorderTraversal(_ root: TreeNode?) -> [Int] {
guard let root = root else { return [] }
var list: [Int] = []
list += inorderTraversal(root.left)
list.append(root.val)
list += inorderTraversal(root.right)
return list
}
///二叉树的后序遍历
///给定一个二叉树的根节点 root,返回它的 后序 遍历
func postorderTraversal(_ root: TreeNode?) -> [Int] {
guard let root = root else { return [] }
var list: [Int] = []
list += postorderTraversal(root.left)
list += postorderTraversal(root.right)
list.append(root.val)
return list
}
}
//root = [1,null,2,3]
let binary = BinaryTree()
let b = TreeNode(val: 3, left: nil, right: nil)
let a = TreeNode(val: 2, left: b, right: nil)
let root = TreeNode(val: 1, left: nil, right: a)
binary.preorderTraversal(root)
binary.inorderTraversal(root)
binary.postorderTraversal(root)