①题目:

    给定一个二叉树,返回它的中序遍历。

    示例:

      

     进阶: 递归算法很简单,你可以通过迭代算法完成吗?

②代码:

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        //因为最后要打印输出最终的中序遍历结果,所以声明一个数组来保存这个有序的结果,并通过
        //返回数组名的方式,来打印整个中序遍历的结果。
        //又因为我不知道数组长度是几,所以声明为ArrayList形数组最好。
        List<Integer> arr = new ArrayList<>();
        //因为我要结果保存进数组,所以最好是创建个辅助函数,让root和数组名一起传进去。
        helper(root,arr);
        return arr;
    }
    private void helper(TreeNode root,List<Integer>arr){
        if(root != null){
            if(root.left != null){
                helper(root.left,arr);
            }
            arr.add(root.val);//这个add方法是ArrayList类下的一个方法,就是往数组里添加元素。
            if(root.right != null){  //这里添加好了,以后return arr的时候就全部一起打印出来
                helper(root.right,arr);
            }
        }
    }
}
12-24 00:57
查看更多