思维方式
对于二叉树的题目,有两种思维方式:
- 一种是遍历思维,遍历一遍树的内容就会得出结果
- 一种是分解思维,将大问题分解为子问题,解决子问题并得出最终结果
不论使用哪种思维解题,我们都需要考虑到,单拎出来一个树节点,要干什么,在什么时候干
前中后序
前中后序实际上就是二叉树遍历过程中处理每一个节点是三个特殊时间节点,前序是在刚进入一个节点的时候执行,后序就是要离开一个节点的时候执行,中序是遍历完左子树,将要遍历右子树的时候执行
所以在涉及遍历问题的地方,我们只需要考虑单独的一个节点拿出来该干些什么,执行上就可以彻底的抛给二叉树框架(前中后序)解决即可
图算法虽然没有前中后序的说法,但是遍历的思路是相同的,只需要考虑节点的任务就好
中序遍历更多的应用于二叉搜索树场景下,二叉搜索的中序遍历完全是遍历一个有序数组;而前序和后序的不同在于,前序是自顶而下的,后序是自底而上的,这个不同也说明了,前序遍历获取信息只能通过父节点传递来的,而后序遍历不仅获得了当前节点的参数,还可以获得子树通过返回值传递来的信息
后记
算法的学习思考来源于对两位博主的总结: