【问题标题】:Number of valid parenthesis catalan number explanation有效括号加泰罗尼亚语数说明
【发布时间】:2019-03-13 13:46:15
【问题描述】:

在研究catalan numbers时,我遇到的一些应用是:

  1. 没有可能使用 n 个节点的二叉搜索树。
  2. 没有办法使用圆上的 2*n 个点绘制不相交的弦。
  3. 没有办法排列 n 对括号。

虽然我理解前两个问题,加泰罗尼亚数字如何适合他们的解决方案,但我无法理解它们如何适合第三个问题。

在互联网上找不到任何其他有用的资源来解释 HOW 部分。每个人都只是说这是解决方案。

谁能解释一下。

【问题讨论】:

  • 在实际的计算机编程中,这是一个怎样的问题?尽管在一些编程问题中使用了加泰罗尼亚数字(包括我在这个网站上回答的至少一个使用括号的问题),但看起来这个问题更适合Mathematics Stack Exchange 网站。
  • 感兴趣的 Enumerate binary trees - 这是使用 Motzkin 数字完成的,但加泰罗尼亚语是相关的。
  • 感兴趣的:OEIS Catalan

标签: math catalan


【解决方案1】:

由于其他人似乎不同意我认为这个问题是题外话,我现在决定它是题外话并提供并回答。

Wikipedia 确实对“排列 n 对括号的方法的数量”(this link 中的第二个要点)感到困惑。部分困惑是括号字符串的顺序与顺序不匹配二叉树,你确实理解,或者有很多其他的例子。

这是一种将正确匹配的n 括号对字符串转换为具有n 内部节点的二叉树的方法。考虑最左边的括号,这将是一个左括号,以及与之匹配的右括号。将字符串变成二叉树的一个节点。当前考虑的括号inside的子字符串成为该节点的左子节点,当前考虑的括号之后(右侧)的子字符串- 考虑的右括号成为右孩子。一个或两个子字符串可能为空,并且当前考虑的括号被简单地删除。如果任一子字符串不为空,则递归继续此过程,直到删除所有括号。

这里有两个例子。让我们从字符串((())) 开始。我们从

考虑的括号是最外面的括号。这变成了

(我没有费心绘制外部叶节点)然后

然后

这是维基百科最左边的二叉树,有 3 个内部节点。

现在让我们创建另一个字符串(())()。我们从

同样,考虑的括号是最外面的括号。这转换为

现在考虑的括号是前两个,而不是最外面的。这变成了

最后变成了

这是维基百科列表中的第二棵二叉树。

我希望你现在明白了。这是正确配对的所有五个可能的 3 对括号字符串的列表,然后是 Wikipedia 的二叉树列表。这些列表现在相互对应。

    ((()))       (()())        (())()       ()(())       ()()()

【讨论】:

  • Since others do not seem to agree with me that this question is off-topic 不是我。我明白了。
  • 您可以尝试使用简单的 DFS(从根到叶,从左到右)。左边是 '(' 而右边是 ')' 除了被访问的边缘被忽略。
  • @RoryDaulton 感谢您提供带有图片支持的清晰答案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多