94. 二叉树的中序遍历
package leetcode; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class demo_94 { //递归遍历 public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<Integer>(); order(root, list); return list; } public void order(TreeNode root,List<Integer> list) { if(root!=null) { order(root.left, list); list.add(root.val); order(root.right, list); } } //非递归遍历 public List<Integer> inorderTraversal2(TreeNode root) { List<Integer> list=new ArrayList<Integer>(); Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode node=root; TreeNode temp; while(node!=null||!stack.isEmpty()) { while(node!=null) { stack.push(node); node=node.left; } if(!stack.isEmpty()) { temp=stack.pop(); list.add(temp.val); node=temp.right; } } return list; } }