LeetCode每日一题:二叉树中序排列

问题描述

Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree{1,#,2,3},
1

2
/
3

return[1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?

问题分析

二叉树的中序排列,用递归比较简便,题目要求用非递归的算法,用栈实现。这里给出了递归地做法。

代码实现

public ArrayList inorderTraversal(TreeNode root) {
        ArrayList inOrder = new ArrayList<>();
        if (root == null) return inOrder;
        getInorder(root, inOrder);
        return inOrder;
    }

    private void getInorder(TreeNode root, ArrayList inOrder) {
        if (root == null) return;
        else {
            getInorder(root.left, inOrder);
            inOrder.add(root.val);
            getInorder(root.right, inOrder);
        }
    }

你可能感兴趣的:(LeetCode每日一题:二叉树中序排列)