94. 二叉树的中序遍历
https://leetcode.cn/problems/binary-tree-inorder-traversal/
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;public class hot94 {//递归public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inOrder(root, res);return res;}public 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> inorderTraversal2(TreeNode root) {List<Integer> result = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode current = root;while (current != null || !stack.isEmpty()) {// 一直向左走到底,将路径上的节点入栈while (current != null) {stack.push(current);current = current.left;}// 弹出栈顶节点并访问current = stack.pop();result.add(current.val);// 转向右子树current = current.right;}return result;}}class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}