class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
}
前序遍历
private List<Integer> dlr(TreeNode root) {
LinkedList<Integer> res = new LinkedList<>();
if(root == null)
return res;
res.addLast(root.val);
dlr(root.left);
dlr(root.right);
}
中序遍历
private List<Integer> ldr(TreeNode root) {
LinkedList<Integer> res = new LinkedList<>();
if(root == null)
return;
Set<TreeNode> leftVisited = new HashSet<>();
Deque<TreeNode> stack = new LinkedList<>();
stack.addLast(root);
while (!stack.isEmpty()){
TreeNode node = stack.peekLast();
if(leftVisited.contains(node)){
res.addLast(node.val);
stack.removeLast();
if(node.right != null)
stack.addLast(node.right);
} else {
if(node.left != null)
stack.addLast(node.left);
leftVisited.add(node);
}
}
}