1. 二叉树:递归函数究竟什么时候需要返回值,什么时候不要返回值?
一般情况下:如果需要搜索整颗二叉树,那么递归函数就不要返回值,如果要搜索其中一条符合条件的路径,递归函数就需要返回值,因为遇到符合条件的路径了就要及时返回。
其实还有一种就是后序遍历需要根据左右递归的返回值推出中间节点的状态,这种需要有返回值。
另外,如果我们重建二叉树(比如删除等)root->left = traversal(root->left....)这种类型的时候,也会带有返回值,但是返回值不会中断迭代。
2. 如果递归函数有返回值,如何区分要搜索一条边,还是搜索整个树呢?
搜索一条边的写法:
if (递归函数(root->left)) return ;
if (递归函数(root->right)) return ;
搜索整个树写法:
left = 递归函数(root->left);
right = 递归函数(root->right);
left与right的逻辑处理;
2.递归函数什么时候加if,什么时候不加if?
其实就是控制空节点(空指针)是否进入递归,是不同的代码实现方式,都是可以的。
一般情况来说:如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。

1361

被折叠的 条评论
为什么被折叠?



