TreeNode
1 | class TreeNode: |
前序遍历
1 | def preorder(root): |
中序遍历
1 | def inorder(root): |
后序遍历
1 | def postorder(root): |
广度优先(层序遍历)
1 | def bfs(root): |
深度优先
1 | def dfs(root): |
总结
前序、中序、后序遍历其实都是深度优先思想的体现,我这里采用递归写法,便于记忆,三者的区别在于:遍历左右子树与对此节点做出操作(
print(root.val)
)的顺序深度优先使用栈,广度优先使用队列,我这里均采用迭代写法;注意深度优先的栈的先入后出特性,应先判断right再判断left