二叉树的中序遍历
import java.util.*;
public class BinaryTreeInorderTraversal {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
method(root, list);
return list;
}
/**
* 递归实现
*
* @param root
* @param list
*/
private void method(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
method(root.left, list);
list.add(root.val);
method(root.right, list);
}
/**
* 迭代实现
* 执行结果:通过
* 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
* 内存消耗:39.3 MB, 在所有 Java 提交中击败了91.87%的用户
* 通过测试用例:70 / 70
*
* @param root
* @param list
*/
private void method1(TreeNode root, List<Integer> list) {
Stack<TreeNode> stack = new Stack<TreeNode>();
while (root != null) {
stack.add(root);
root = root.left;
}
while (!stack.isEmpty()) {
root = stack.pop();
list.add(root.val);
if (root.right != null) {
root = root.right;
while (root != null) {
stack.add(root);
root = root.left;
}
}
}
}
}
评论区