【Leetcode-Medium-94】Binary Tree Inorder Traversal

来源:互联网 发布:java方法交换两个变量 编辑:程序博客网 时间:2024/06/07 00:16

【Leetcode-Medium-94】Binary Tree Inorder Traversal

题目

Given a binary tree, return the inorder traversal of its nodes’ values.

For example:
Given binary tree [1,null,2,3],

   1    \     2    /   3

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

思路

递归方式
迭代方式

程序

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    // ----------------------------------------    // 迭代方式    public List<Integer> inorderTraversal(TreeNode root){        List<Integer> res = new ArrayList<>();        if (root == null) return res;        LinkedList<TreeNode> stack = new LinkedList<>();        TreeNode currNode = root;        while (currNode != null || !stack.isEmpty()){            while (currNode != null){                stack.push(currNode);                currNode = currNode.left;            }            if (!stack.isEmpty()){                currNode = stack.pop();                res.add(currNode.val);                currNode = currNode.right;            }        }        return res;    }        // --------------------------------------    // 递归方式    public List<Integer> inorderTraversal0(TreeNode root) {        List<Integer> res = new ArrayList<>();        helper2(root, res);        return res;    }    private void helper(TreeNode root, List<Integer> res){        if (root != null){            helper(root.left, res);            res.add(root.val);            helper(root.right, res);        }    }    private void helper2(TreeNode root, List<Integer> res){        if (root == null) return;        helper2(root.left, res);        res.add(root.val);        helper2(root.right, res);    }}

声明:题目来自Leetcode.

原创粉丝点击