class TreeNode<Value> {
var val: Value
var left: TreeNode?
var right: TreeNode?
init(value: Value, left: TreeNode?, right: TreeNode?) {
self.val = value
self.left = left
self.right = right
}
}
func traverseForward(_ head: TreeNode<Int>?){
guard let root = head else { return }
print(root.val)
traverseForward(root.left)
traverseForward(root.right)
}
func traverseMiddle(_ head: TreeNode<Int>?){
guard let root = head else { return }
traverseMiddle(root.left)
print(root.val)
traverseMiddle(root.right)
}
func traverseRear(_ head: TreeNode<Int>?){
guard let root = head else { return }
traverseRear(root.left)
traverseRear(root.right)
print(root.val)
}
let aa = TreeNode(value: 1, left: nil, right: nil)
let bb = TreeNode(value: 2, left: aa, right: nil)
let cc = TreeNode(value: 3, left: aa, right: bb)
let root = TreeNode(value: 4, left: bb, right: cc)
//前序遍历
traverseForward(root)
//中序遍历
traverseMiddle(root)
//后序遍历
traverseRear(root)