(1)一些个人感悟 不一定对 随时更新
1) 特殊情况
有时候会有单独说明的情况。例如node == nullptr时怎么办。单独写出来就行
直接写到main function里也可以,在引用helper function之前
2) 终止条件
(1)if(root == nullptr) …
(2)如果明确提到叶子相关,如:从root到leaf的路径/找最底层叶子:
if(root->left == nullptr && root->right == nullptr)…
(3)或者这一层遇到了特定的值需要向上返回:
if(p->val == root->val) return root;
注意接下来“中”和“左右”的顺序按照相应的前序/中序/后序来分配
3)“中”的逻辑:就是本题要更新的一些变量:
如:
(1)找最后一行(最大深度),更新maxDepth。
(2)找路径,更新root通向该leaf的路径
(3)合并二叉树:t1->val = t1->val + t2->val
如果有一些全程都要用且不用每次改变的变量(如maxDepth,只手动改变,不随每次递归改变),就放在方法外面。
最后别忘了return
4) 左右递归部分
注意查 if (root->left) 然后再写traversal(root->left)!right同理
注意其他变量如果需要随着改变(如depth+1)也要写!不能只改root->left/root->right