1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。
    2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。

    综上,遇到一道二叉树的题目时的通用思考过程是:
    1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现。
    2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值。
    3、无论使用哪一种思维模式,你都要明白二叉树的每一个节点需要做什么,需要在什么时候(前中后序)做
    image.png

    题目分类 题目编号
    树与递归 100、222、101、226、437、563、617、508、572、543、654、687、87
    树的层次遍历 102、429、690、559、662、671、513、515、637、103、107、257、623、653、104、111、112、113、129、404、199、655、116、117
    树的前序遍历 144、589
    树的前序序列化 606、331、652、297、449
    树的后序遍历 145、590
    树的中序遍历与二叉搜索树 94、700、530、538、230、98、173、669、450、110、95、108、109
    重构二叉树 105、106
    二叉树的展开 114
    最近公共祖先 235、236
    Morris中序遍历 501、99
    四叉树 558、427