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; } }