对于二叉树:没有必要考虑树节点值,我只对具有'N'节点的不同树拓扑感兴趣.
对于二进制搜索树:我们必须考虑树节点值.
我遇到了以下问题:
给定一个正整数 n,生成节点为 1, 2, ..., n 的所有二叉搜索树。
例如,给定 3,可得到:

我正在做以下事情:
Generate all the permutations of the sequence (1, 2, ..., n).
For each permutation p:
Create a tree t.
For each number n in p:
Insert n into t.
If t has not yet been generated, keep it. <-- Expensive Operation
Run Code Online (Sandbox Code Playgroud)
然而,这种方法很慢,因为会生成重复的树(对于 n = 3,(2,1,3) 和 (2,3,1) 生成相同的树),并且我需要确保它们不被保留。有人会指出我有更快的方法吗?