从BST-Prolog中提取子树

从BST-Prolog中提取子树,prolog,binary-search-tree,subtree,Prolog,Binary Search Tree,Subtree,假设您有一个二叉搜索树: t(73,t(31,t(5,无,无),无),t(101,t(83,无,t(97,无,无)),t(200,无,无)) 即: 73 / \ 31 101 / / \ 5 83 200 / 97

假设您有一个二叉搜索树:

t(73,t(31,t(5,无,无),无),t(101,t(83,无,t(97,无,无)),t(200,无,无))

即:

                73
             /     \
            31     101
           /      /   \
          5      83  200
                    /
                   97
                   101
                  /   \
                 83  200
                    /
                   97
我需要编写一个谓词子树(X1,X2,T),它将从树(X1和X2)中获取
2
值,并为它们找到最小的公共父级,并将其子树存储在T中

因此,对于上面的示例,如果我查询: 子树(83200,X)。

我应该回去了:

t(101,t(83,nil,t(97,nil,nil)),t(200,nil,nil))
即:

                73
             /     \
            31     101
           /      /   \
          5      83  200
                    /
                   97
                   101
                  /   \
                 83  200
                    /
                   97
因为
101
是我两个数字的最小公共值,所以我得到了那个子树。 我怎么能这么做


谢谢

一般步骤如下所示:

  • 查找从根到第一个元素的路径
  • 对第二个元素执行相同的操作
  • 路径应该在开始时共享一些元素。最后一个公共元素是子树的根
  • 从根中提取子树

  • 我希望这能提供足够的帮助。

    是的,我知道这是我的基本想法,只是对代码不太确定。。不知道怎么写。