难度简单940
给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new LinkedList<>();
Deque<TreeNode> s = new LinkedList<>();
TreeNode cur = root ;
while(cur != null || !s.isEmpty()){
if(cur != null){
res.add(cur.val);
s.push(cur);
cur = cur.left;
}else{
cur = s.pop();
cur = cur.right;
}
}
return res;
}
}
难度简单1615
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new LinkedList<>();
Deque<TreeNode> s = new LinkedList<>();
TreeNode cur = root ;
while(cur != null || !s.isEmpty()){
if(cur != null){
s.push(cur);
cur = cur.left;
}else{
cur = s.pop();
res.add(cur.val);
cur = cur.right;
}
}
return res;
}
}
给你一棵二叉树的根节点 root
,返回其节点值的 后序遍历 。
class Solution {
List<Integer> res;
public List<Integer> postorderTraversal(TreeNode root) {
res = new LinkedList<>();
//得到中右左 然后反转成左右中
Deque<TreeNode> s = new LinkedList<>();
TreeNode cur = root;
while(!s.isEmpty() || cur != null ){
if(cur != null){
s.push(cur);
//System.out.println(cur.val);
res.add(cur.val);
cur = cur.right;
}else{
cur = s.pop().left;
}
}
Collections.reverse(res);
return res;
}
}