lc94.java 1.3 KB
Newer Older
L
liu13 已提交
1 2 3
package code;
/*
 * 94. Binary Tree Inorder Traversal
L
liu13 已提交
4
 * 题意:
L
liu13 已提交
5 6
 * 难度:Medium
 * 分类:HashTable, Stack, Tree
L
liu13 已提交
7
 * 思路:左节点依次入栈二叉树中序遍历
L
liu13 已提交
8
 * Tips:和lc144前序,lc145后序一起看, lc102层次遍历
L
liu13 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22
 */
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class lc94 {
    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
L
liu13 已提交
23
        if(root==null) return res;
L
liu13 已提交
24 25 26 27 28 29 30 31 32 33 34 35
        Stack<TreeNode> st = new Stack();
        while( !st.isEmpty() || root!=null ) {      //注意停止条件
            while (root != null) {
                st.push(root);
                root = root.left;
            }
            root = st.pop();
            res.add(root.val);
            root = root.right;
        }
        return res;
    }
L
liu13 已提交
36 37 38 39 40 41 42 43 44 45 46 47

    List<Integer> res = new ArrayList();
    public List<Integer> inorderTraversal2(TreeNode root) { //递归
        helper(root);
        return res;
    }
    public void helper(TreeNode root){
        if(root==null) return;
        helper(root.left);
        res.add(root.val);
        helper(root.right);
    }
L
liu13 已提交
48
}