算法流程 (4步)可以解决面试中绝大多数的二叉树问题,尤其是树型dp问题。

步骤如下:

Untitled

第二步中的3种情况

2.1 左子树怎样,右子树怎样,且左右子树间满足某种条件

技巧:通常是问什么,左右子树就是什么,然后去找左右子树的约束条件

例题:

二叉树:求二叉树的最大树高

二叉树:判断二叉树是不是满二叉树「二叉树的递归套路」

判断二叉树是不是平衡二叉树

二叉树:判断二叉树是不是完全二叉树「二叉树的递归套路」

二叉树:给定一棵二叉树的头节点head,和另外两个节点a和b,返回a和b的最低公共祖先「二叉树的递归套路」

2.2 讨论与x有关和与x无关两种情况

在第2步中,常常将情况分为两类:

与x有关… 与x无关… 小细节:写于编写x有关无关的代码时,将无条件的代码放在前面,将有条件的代码放在后面。如果都有条件或都无条件则无先后顺序。

例题:

给定一棵二叉树的头节点head,返回整棵二叉树的最大距离「二叉树的递归套路」 3. 第四步中的2种常用手法 在第4步中,关于递归边界: