给定一个二叉树,返回它的 前序 遍历。
题解:
- 遍历顺序为 visit,left,right
- 用栈存储右节点,无左节点弹栈,循环
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
//visit,left,right
List<Integer> ret = new ArrayList<>();
if(root==null){
return ret;
}
Stack<TreeNode> s = new Stack<>();
while(root!=null || !s.empty()){
if(root!=null){
ret.add(root.val);
if(root.right!=null){
s.push(root.right);
}
root = root.left;
}else{
root = s.pop();
}
}
return ret;
}
}