迭代
递归
链表是一种兼具递归和迭代性质的数据结构
树结构不过是链表的衍生
递归性质:问题可以划分为子问题,并且子问题与原问题的结构相同
递归函数都有个 base case
对于递归算法,最重要的就是明确递归函数的定义
不要跳进递归,而是利用明确的定义来实现算法逻辑
写递归算法的关键是要明确函数的「定义」是什么,然后相信这个定义,利用这个定义推导最终结果,绝不要跳入递归的细节
二叉树题目的一个难点就是,如何把题目的要求细化成每个节点需要做的事情
写二叉树的算法题,都是基于递归框架的,我们先要搞清楚 root 节点它自己要做什么,然后根据题目要求选择使用前序,中序,后续的递归框架。
二叉树题目的难点在于如何通过题目的要求思考出每一个节点需要做什么,这个只能通过多刷题进行练习了。
数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)
对于任何数据结构,其基本操作无非遍历 + 访问,再具体一点就是:增删查改。
你就会发现只要涉及递归的问题,都是树的问题(一种遍历方式可以和它对应的数据结构对应)
数据结构的基本存储方式就是链式和顺序两种,基本操作就是增删查改,遍历方式无非迭代和递归