三版代码均只有16行
废话不多说,直接上代码
前序遍历
class Solution{
public List<Integer> preorderTraversal(TreeNode root){
List<Integer> res = new LinkedList<>();
Deque<TreeNode> d = new LinkedList<>();
while(!d.isEmpty() || root != null){
while(root != null){
res.add(root.val); // Attention!
d.push(root);
root = root.left;
}
root = d.pop();
root = root.right;
}
return res;
}
}
中序遍历
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new LinkedList<>();
Deque<TreeNode> d = new LinkedList<>();
while(!d.isEmpty() || root != null){
while(root != null){
d.push(root);
root = root.left;
}
root = d.pop();
res.add(root.val); // Attention!
root = root.right;
}
return res;
}
}
后序遍历
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new LinkedList<>();
Deque<TreeNode> d = new LinkedList<>();
while(!d.isEmpty() || root != null){
while(root != null){
d.push(root);
res.add(0, root.val); // Attention!
root = root.right;
}
root = d.pop();
root = root.left;
}
return res;
}
}
经leetcode测试,三版代码的时间复杂度都能击败100%用户。
欢迎收藏~