给定一个二叉树,返回它的中序 遍历。
思路与代码
迭代遍历
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList();
Deque<TreeNode> stack = new ArrayDeque();
while (root != null || !stack.isEmpty()){
while (root != null) {
stack.push(root);
root = root.left;
}
TreeNode node = stack.pop();
res.add(node.val);
root = node.right;
}
return res;
}
}
递归遍历
class Solution {
private List<Integer> res = new ArrayList<>();
public List<Integer> inorderTraversal(TreeNode root) {
dfs(root);
return res;
}
public void dfs(TreeNode node){
if (node == null) return;
dfs(node.left);
res.add(node.val);
dfs(node.right);
}
}