如何确定递归中止基础步骤

来源:1-13 删除二分搜索树的最大元素和最小元素

weixin_慕慕4340848

2020-10-13 20:04:40

老师,请问在递归函数开始时,通常都需要对基础工况(中止条件)进行处理,那对于一个问题怎么准确确定它的基础工况呢。比如,求取一个二叉搜索树的最大值,基础情况应该为当前节点右子树为空呢?但是遍历一棵二叉搜索树,基础情况为当前节点为空。

写回答

1回答

liuyubobobo

2020-10-13

这两种递归终止条件都可以。


在这一章,我讲二分搜索树的添加操作,讲了两种实现,本质其实就是递归终止条件不同。我强烈建议你再看一下,比较一下这两种实现,体会一下这两种实现的递归终止条件怎么不同,为什么都能够见正确的逻辑?

(再回忆一下我讲二分搜索的时候,不同的定义,可以得到不同的代码,但他们都是正确的。)


在这个基础上,我强烈建议你思考一下,使用两种递归终止条件,去写最大值的算法,得到的逻辑都是怎样的?哪种逻辑更优雅一些?哪种可能产生什么问题?


如果深入去想这些问题,你就能获得“更好”的递归终止条件。你的问题没有标准答案,没有一种方法可以帮助我们直接确定递归终止条件怎样定是最优的。必须根据实际解决的问题是怎样的,问题的性质是怎样的,来决定。试试看,进步就在这个过程中哦。


加油!:)

0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2603 学习 · 1086 问题

查看课程