標籤:二叉樹 遍曆 演算法 面試 java
【094-Binary Tree Inorder Traversal(二叉樹中序遍曆)】
【LeetCode-面試演算法經典-Java實現】【所有題目目錄索引】
原題
Given a binary tree, return the inorder traversal of its nodes’ values.
題目大意
對一棵二叉樹進行中序遍曆。
解題思路
解法一:遞迴實現,解法二:迭代實現。
代碼實現
二叉樹結點類
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}
演算法實作類別,解法一
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); } }}
演算法實作類別,解法一
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; }}
評測結果
點擊圖片,滑鼠不釋放,拖動一段位置,釋放後在新的視窗中查看完整圖片。
解法一
解法二
特別說明
歡迎轉載,轉載請註明出處【http://blog.csdn.net/derrantcm/article/details/47310553】
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【LeetCode-面試演算法經典-Java實現】【094-Binary Tree Inorder Traversal(二叉樹中序遍曆)】