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