leetcode 94 二叉树的中序遍历/** * Definition for a binary tree node. * public class TreeNode { * int

思路:一直往栈里压左节点,直到没有,再往外弹,并记录下,再去走右节点;

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {

    public List inorderTraversal(TreeNode root) {
        //递归算法
        //
        List a = new ArrayList<>();
        Stack b = new Stack<>();
        if(root == null) return a;
        while(root != null || !b.isEmpty())
        {
            while(root != null)
            {
                b.push(root);
                root = root.left;
            }
            root = b.pop();
            a.add(root.val);
            root = root.right;
        }
        return a ;
        
        //迭代算法
    //     List a =new ArrayList();
    //     if(root == null)
    //     {
    //         return a;
    //     }
    //     inorder(root, a);
    //     return a ;
    // }
    // public void inorder(TreeNode root, List a)
    // {
    //     if(root != null)
    //     {
    //         if(root.left != null)
    //         inorder(root.left, a);

    //         a.add(new Integer(root.val));
            
    //         if(root.right != null)
    //         inorder(root.right, a);}
    // }
}
}

 

你可能感兴趣的:(leetcode 94 二叉树的中序遍历/** * Definition for a binary tree node. * public class TreeNode { * int)