Leetcode 94. 中序遍历二叉树

/**
 * 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) {
        TreeNode node = root;
        List ret = new ArrayList<>();
Stack stack = new Stack<>();
        while(node != null || (stack.size()!=0)) {
        if(node !=null) {
            stack.push(node);
            node = node.left;
        }
        else {
                TreeNode currentNode = stack.pop();
        ret.add(currentNode.val);
        node = currentNode.right;
        }
        }
        return ret;    
    }

}


//采用递归法

class Solution {
    public List inorderTraversal(TreeNode root) {
        TreeNode node = root;
        List ret = new ArrayList<>();
        if(node == null)     return ret;
    
        ret.addAll(inorderTraversal(node.left));
        ret.add(node.val);
        ret.addAll(inorderTraversal(node.right));    
        return ret;
    }

你可能感兴趣的:(java)