前言
🌹节日快乐兄弟们!!!
我们在做二叉树oj时,题目要求用递归法,但是我们实际做题时,总是会对递归何时递归一条边,何时递归整棵树迷迷糊糊,卡卡今天来总结下:如何区分递归要搜索一条边,还是搜索整个树呢?
在递归函数有返回值的情况下:
1-如果要搜索一条边,递归函数返回值不为空的时候,立刻返回,
2-如果搜索整个树,直接用一个变量left、right接住返回值,这个left、right后序还有逻辑处理的需要,也就是后序遍历中处理中间节点的逻辑(也是回溯)
- 搜索一条边
递归返回值不为空时:
代码框架1:
if (递归函数(root->left)) return ...;
if (递归函数(root->right)) return ...;
代码框架2:
if (...) return 递归函数(root->left) ;
if (...) return 递归函数(root->right) ;
递归返回值为空时:
代码框架1:
if (...) 递归函数(root->left)
else if (...) 递归函数(root->right)
外面统一return;
代码框架2:
if (...)
{
递归函数(root->left)