Given a binary tree, return the inorder traversal of its nodes’ values.java
对一棵二叉树进行中序遍历。node
解法一:递归实现,解法二:迭代实现。算法
二叉树结点类spa
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
算法实现类,解法一.net
import java.util.LinkedList; import java.util.List; public class Solution { private List<Integer> result; public List<Integer> inorderTraversal(TreeNode root) { result = new LinkedList<>(); inOrder(root); return result; } private void inOrder(TreeNode root) { if (root != null) { inOrder(root.left); result.add(root.val); inOrder(root.right); } } }
算法实现类,解法一code
import java.util.LinkedList; import java.util.List; public class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new LinkedList<>(); LinkedList<TreeNode> stack = new LinkedList<>(); TreeNode node = root; while (node != null || !stack.isEmpty()) { while (node != null) { stack.addLast(node); node = node.left; } if (!stack.isEmpty()) { node = stack.removeLast(); result.add(node.val); node = node.right; } } System.out.println(result); return result; } }