前中后序遍历
给定一棵树如下所示
1 / \ 2 3 / / \ 4 5 6
1.前序遍历:根——左——右
1-2-4-3-5-6
2.中序遍历:左——根——右
4-2-1-5-3-6
3.后续遍历:左——右——根
4-2-5-6-3-1
使用递归的方法实现这三种遍历都很简单,我们在这使用循环迭代的方法,代码如下
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Stack;
public class TreeOrder {
public List<Integer> preOrder(TreeNode root) {//前序遍历
List<Integer> re = new ArrayList<>();
Stack<TreeNode> s = new Stack<>();
s.push(root);
while (!s.isEmpty()) {
TreeNode cur = s.pop();
re.add(cur.val);
s.push(cur.right);
s.push(cur.left);
}
return re;
}
public List<Integer> inOrder(TreeNode root) {//中序遍历
List<Integer> re = new ArrayList<>();
Stack<TreeNode> s = new Stack<>();
TreeNode cur = root;
while (cur!=null||!s.isE