在研究catalan numbers时,我遇到的一些应用程序是:
虽然我了解前两个问题,加泰罗尼亚数字如何适合其解决方案,但我不明白它们如何适合第三个问题。
在互联网上找不到任何其他有用的资源,这可以解释 HOW 部分。每个人都说这是解决方案。
有人可以解释。
答案 0 :(得分:2)
由于其他人似乎不同意这个问题,所以我现在决定将其作为话题,并提供答案。
Wikipedia确实对“排列n对括号的方式数目”(this link中的第二个要点)感到困惑。部分困惑是括号字符串的顺序不匹配您确实理解过的二叉树的顺序,或与许多其他示例一起使用。
这是将正确匹配的n
对括号的字符串转换为带有n
个内部节点的二叉树的方法。考虑最左括号(将是左括号)及其匹配的右括号。将字符串变成二叉树的节点。当前考虑的括号内 的子字符串成为该节点的左子代,而当前视图的 之后(右侧)的子字符串成为该节点的左子代。考虑正确的右括号成为正确的孩子。子字符串中的一个或两个都可以为空,并且只需删除当前考虑的括号即可。如果任一子字符串都不为空,请递归继续此过程,直到所有括号都被删除。
这里有两个例子。让我们从字符串((()))
开始。我们从
考虑的括号是最外面的。这变成
(我并没有费心画外部叶子节点)
然后
这是Wikipedia最左侧的具有3个内部节点的二叉树。
现在让我们做另一个字符串(())()
。我们从
同样,所考虑的括号是最外面的括号。转换为
现在考虑的括号是前两个,而不是最外面的。这变成
最终成为
这是Wikipedia列表中的第二个二叉树。
希望您现在能理解。这是正确配对的3对括号中所有五个可能字符串的列表,其后是Wikipedia的二叉树列表。这些列表现在彼此对应。
((())) (()()) (())() ()(()) ()()()