①题目:
给定一个二叉树,返回它的中序遍历。
示例:
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
②代码:
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); } } } }