一种是递归法:
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
inorder(root, res);
return res;
}
private void inorder(TreeNode root, List<Integer> res) {
if (root == null) {
return;
}
inorder(root.left, res);
res.add(root.val);
inorder(root.right, res);
}
一种是迭代法:
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
TreeNode curr = root;
while (curr != null || !stack.isEmpty()) {
while (curr != null) {
stack.push(curr);
curr = curr.left;
}
curr = stack.pop();
res.add(curr.val);
curr = curr.right;
}
return res;
}
二叉树中序遍历:递归与迭代实现,
本文介绍了两种方法来遍历二叉树进行中序遍历,一是使用递归,二是利用栈进行迭代。递归法直接调用函数处理左子树、根节点和右子树;迭代法则通过栈保存当前节点,先遍历左子树并压栈,然后处理根节点和右子树。

被折叠的 条评论
为什么被折叠?



