前言
汇总二叉树的前, 中, 后序遍历.每种遍历都有经典的递归和迭代方法.
前序遍历
递归方法
1 | public List<Integer> preorderTraversal(TreeNode root) { |
迭代方法
1 | public List<Integer> preorderTraversal(TreeNode root) { |
中序遍历
递归方法
1 | public List<Integer> inorderTraversal(TreeNode root) { |
迭代方法
图解
代码
1 | public List<Integer> inorderTraversal2(TreeNode root) { |
后序遍历
递归方法
1 | public List<Integer> postorderTraversal(TreeNode root) { |
迭代方法
- 前序遍历的过程是
中左右
。- 将其转化成
中右左
。也就是压栈的过程中优先压入左子树,再压入右子树。
- 将其转化成
- 然后将这个结果反过来,用
addFirst()
方法将元素输出到数组即可完成逆序。
1 | public List<Integer> postorderTraversal(TreeNode root) { |