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;
}
}
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
解法一
解法二
版权声明:本文为博主原创文章,未经博主允许不得转载。
【LeetCode-面试算法经典-Java实现】【094-Binary Tree Inorder Traversal(二叉树中序遍历)】
原文地址:http://blog.csdn.net/derrantcm/article/details/47310553