94. 二叉树的中序遍历(简单)
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal
思路1:
递归,常规思路,
思路2:
迭代,入栈先判断左子树,然后入栈,再入右子树
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
class Solution { List<Integer> res = new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { if(root ==null){ return res; } inorderTraversal(root.left); res.add(root.val); inorderTraversal(root.right); return res; } }
|
代码2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root==null){ return res; } Stack<TreeNode> stack = new Stack<>(); TreeNode cur = root; while (cur!=null || !stack.isEmpty()){ if(cur!=null){ stack.push(cur); cur = cur.left; }else{ cur = stack.pop(); res.add(cur.val); cur = cur.right; } } return res; } }
|