思路
使用递归,1.大问题转化为小问题
2.出口,模拟一下最下层,不要卡死
3.有问题就模拟跑一遍
4.返回值地方:不要往下想,只要直到会返回什么就行

4.

代码
class Solution {
//遍历以 root为根的树
public List<Integer> inorderTraversal(TreeNode root) {
if (root==null){
return new ArrayList<>();
}
//初始化 list
List list=new ArrayList<Integer>();
//左子树
//问题转化为:遍历以root.left为根的树,并把结果返回,追加到原来的list上
if(root.left!=null) {
list.addAll(inorderTraversal(root.left));
}
//当前
list.add(root.val);
//右子树
if(root.right!=null) {
list.addAll(inorderTraversal(root.right));
}
return list;
}
}
总结
1.关于递归
使用递归,1.大问题转化为小问题
2.模拟出口,不要卡死
3.有问题就模拟跑一遍
4.返回值地方:不要往下想,只要直到会返回什么就行