欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode——94,二叉树中序遍历

程序员文章站 2022-05-19 21:02:11
...
/**
 * \* Created: liuhuichao
 * \* Date: 2019/7/16
 * \* Time: 31:57 PM
 * \* Description:二叉树的中序遍历 : 中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树
 * \
 * 给定一个二叉树,返回它的中序 遍历。
 * <p>
 * 示例:
 * <p>
 * 输入: [1,null,2,3]
 * 1
 * \
 * 2
 * /
 * 3
 * <p>
 * 输出: [1,3,2]
 * <p>
 */
public class A94_BinaryTreeInorderTraversal {


    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        inorderTraversal(root, result);
        return result;
    }

    /**
     * 递归方式求解
     *
     * @param root
     * @param result
     */
    void inorderTraversal(TreeNode root, List<Integer> result) {
        if (root.left != null) {
            inorderTraversal(root.left, result);
        }
        result.add(root.val);
        if (root.right != null) {
            inorderTraversal(root.right, result);
        }
    }

    /**
     * 基于栈的方式求解
     * 中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树
     *
     * @param root