多重递归:谜题、分形及更多
1. 遍历顺序
在树的遍历中,有前序遍历和后序遍历两种重要方式。前序遍历体现了递归调用的执行顺序,以二叉树为例,每个节点都会进行一次递归调用。例如对特定列表进行前序遍历,会按如下顺序输出:
Emma: 2002/08/23
Anna: 1999/12/03
Paul: 2000/01/13
Lara: 1987/08/23
John: 2006/05/08
Luke: 1976/07/31
Sara: 1995/03/14
而后序遍历的键序列反映了相关递归调用完成的顺序。对于生日日历二叉搜索树进行后序遍历,会得到这样的键序列:‘Anna’,‘John’,‘Luke’,‘Lara’,‘Sara’,‘Paul’,‘Emma’。可以看到,初始根节点的键(‘Emma’)出现在最后,因为对整棵树的方法调用是最后结束的。
2. 最长回文子串问题
2.1 问题描述
给定一个长度为 n 的初始输入字符串 s = s0s1 ⋯sn−2sn−1,目标是找出其中包含的最长回文子串。如果有多个相同最大长度的回文子串,算法可以返回其中任意一个。需要注意的是,子串是字符串中连续的元素序列,不要与子序列的概念混淆,子序列中的元素不一定连续出现。这是一个优化问题,目标是获得涉及该字符串的某个函数的最大值。
2.2 问题规模与基本情况
问题的规模由字符串的长度 n 决定。最小的情况对应长度为 0(空字符串)或 1(单个字符)的字符串,在这种基本情况下,算法可以直接返回输入字符串。
超级会员免费看
订阅专栏 解锁全文

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



