Typescript 给定两棵N元树,有什么比预排序字符串比较更好、更有效的方法来显示一棵树是另一棵树的子树?

Typescript 给定两棵N元树,有什么比预排序字符串比较更好、更有效的方法来显示一棵树是另一棵树的子树?,typescript,tree,traversal,preorder,Typescript,Tree,Traversal,Preorder,在一个问题中,我得到了两个二叉树,为了检查一个二叉树是否是另一个二叉树的子树,代码片段基本上对二叉树进行了预排序遍历,并生成相应的字符串。然后,它使用indexOf检查一个树字符串是否在另一个树字符串中,以证明一棵树是另一棵树的子树。 现在的问题是,由于字符串生成和比较非常昂贵,除了执行字符串比较外,我如何将其更改为n元树 我不知道如何解决这个问题,但我有一个想法,我想我可以使用某种HashMap将树节点存储为键,并将其子节点存储为值。然后比较相似键上的两个树值,检查树是否是子树 但我们如何才能

在一个问题中,我得到了两个二叉树,为了检查一个二叉树是否是另一个二叉树的子树,代码片段基本上对二叉树进行了预排序遍历,并生成相应的字符串。然后,它使用indexOf检查一个树字符串是否在另一个树字符串中,以证明一棵树是另一棵树的子树。 现在的问题是,由于字符串生成和比较非常昂贵,除了执行字符串比较外,我如何将其更改为n元树

我不知道如何解决这个问题,但我有一个想法,我想我可以使用某种HashMap将树节点存储为键,并将其子节点存储为值。然后比较相似键上的两个树值,检查树是否是子树

但我们如何才能做到这一点呢?我糊涂了!我需要一点帮助

下面是函数的片段:

//make the Node
interface Node {
  value: string ;
  left?: Node ;
  right?: Node ;
}
function checkSubtree(T1: Node , T2: Node ): boolean {
  return PreOrderTraversal(T1).indexOf(PreOrderTraversal(T2)) > - 1 ;
}
function stringFromPreOrder(tree: Node ): string {
  if (!tree) {
    return "" ;
}
  return tree.value + PreOrderTraversal(tree.left) + PreOrderTraversal(tree.right);
因此,基本上考虑到这一点,我如何使它更好地用于NAY树,而不是连接字符串并比较它们? 另外,对于nary-tree,我确实知道子元素将在一个数组中,并且我对该数组进行预排序,而不是左和右。但是,如何避免字符串连接,因为它很昂贵

参考:

您可以将n元转换为二叉树,反之亦然

我们已经有了一个算法来寻找二叉树的子树。 参考:

我不确定这是一个好办法。只是想分享一下。

参考:

您可以将n元转换为二叉树,反之亦然

我们已经有了一个算法来寻找二叉树的子树。 参考:


我不确定这是一个好办法。只是想分享一下。

欢迎来到Stackoverflow!你能提供一些代码来证明你试了多远吗?这将有助于其他成员了解您的具体问题以及您问题的背景。@GileadKenzo当然可以。我将编辑帖子并发布函数片段。欢迎使用Stackoverflow!你能提供一些代码来证明你试了多远吗?这将有助于其他成员了解您的具体问题以及您问题的背景。@GileadKenzo当然可以。我将编辑帖子并发布函数的片段。