递归方法:
class Solution {
func inorderTraversal(_ root: TreeNode?) -> [Int] {
var res:[Int] = []
func travers(_ root: TreeNode?){
guard let root = root else {return}
travers(root.left)
res.append(root.val)
travers(root.right)
}
travers(root)
return res
}
}
非递归方法:
class InorderTraversal {
func inorderTraversal(root: TreeNode?) -> [Int] {
var stack = [TreeNode]()
var res = [Int]()
var node = root
while !stack.isEmpty || node != nil {
if node != nil {
stack.append(node!)
node = node!.left
} else {
node = stack.removeLast()
res.append(node!.val)
node = node!.right
}
}
return res
}
}