Graph 从数字序列构造一棵特殊的树
我有一个有趣的任务,但我不知道如何解决它 给定序列a=(a1,…,an)无重复元素的最小二叉树M(a)定义如下:Be ai是(a1,…,an)的最小数,然后M(a)的根是ai,其左子树是M(a1,…,ai-1),其右子树是M(ai+1,…,an)。M(∅) 是一个空树。对于给定的序列,在O(n)中构造一个最小树。请注意,子树也是M,因此它们必须遵循规则 这里举个例子。Graph 从数字序列构造一棵特殊的树,graph,binary-tree,theory,Graph,Binary Tree,Theory,我有一个有趣的任务,但我不知道如何解决它 给定序列a=(a1,…,an)无重复元素的最小二叉树M(a)定义如下:Be ai是(a1,…,an)的最小数,然后M(a)的根是ai,其左子树是M(a1,…,ai-1),其右子树是M(ai+1,…,an)。M(∅) 是一个空树。对于给定的序列,在O(n)中构造一个最小树。请注意,子树也是M,因此它们必须遵循规则 这里举个例子。 Thx寻求帮助。它被称为笛卡尔树。关于创建笛卡尔树的文章如下: 您可以在以下位置看到生成此输出的代码: 该算法是递归的: 求
Thx寻求帮助。它被称为笛卡尔树。关于创建笛卡尔树的文章如下: 您可以在以下位置看到生成此输出的代码: 该算法是递归的:
- 求最小元素
- 将父对象链接到最小对象
- 拆分剩余的数字
- 如果left是single,则从最小的链接开始,否则再次调用split
- 若右键为单键,则从最小的链接开始,否则再次调用split
- 返回
C:\Users\James\code\minbin>minbin
1 -> 2
2 -> 3
3 -> 7
3 -> 5
5 -> 11
5 -> 8
8 -> 15
8 -> 19
1 -> 12
12 -> 13