Tree DFS 递归个人总结

(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值