对二叉树的很多问题,一定牢记递归方法。
不要层层推导陷入死循环,只需要三步走(打开冰箱,放入大象、关闭冰箱)。
先明确递推关系:
ans_root = root->val + ans_left * ans_right
这里+和*都是抽象的运算符。
一般模式如下:
int Fun(node *root) {
if(NULL == root) {
return 0; or其他
}
else {
...
Fun(root->left); //当Fun有返回值时,此时的返回值必然会用到
Fun(root->right);
}
递归函数有返回值:对应累乘、累加这种结果需要积累的问题,函数内嵌套的返回值一定会被用到,而不是单调用。
递归函数无返回值:对应遍历及其变种,遍历结果保存在变量中(全局变量或者局部变量传参)。