问题描述:
Given the root of a binary tree, return the inorder traversal of its nodes’ values. 中序遍历
最终结果 = 中序遍历左子树 + 根 + 中序遍历右子树 (如果根存在)
技巧: 这里把list作为参数在递归函数之间传递,也就是说,整个程序来回来去都是写在这一个list中
代码如下:
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> myList = new ArrayList<>();
helper(root, myList);
return myList;
}
public void helper (TreeNode root, List<Integer> aList){
if (root!=null){
helper(root.left, aList);
aList.add(root.val);
helper(root.right, aList);
}
}
}
时间复杂度:T(n)=2T(n/2) + O(1), 根据主定理,T(n)= Θ(n)