相关疑难解决方法(0)

如何在树和遍历之间建立​​双射?

我在看如何inorder + preorder构造独特的二叉树?并认为在伊德里斯写一个正式的证据会很有趣.不幸的是,我得到了相当坚持早,试图证明的方式找到树中的元素对应找到它在其序遍历的方式(当然,我还需要做的序遍历) .任何想法都会受到欢迎.我对完整的解决方案并不特别感兴趣 - 更多的是帮助我们开始正确的方向.

特定

data Tree a = Tip
            | Node (Tree a) a (Tree a)
Run Code Online (Sandbox Code Playgroud)

我可以通过至少两种方式将其转换为列表:

inorder : Tree a -> List a
inorder Tip = []
inorder (Node l v r) = inorder l ++ [v] ++ inorder r
Run Code Online (Sandbox Code Playgroud)

要么

foldrTree : (a -> b -> b) -> b -> Tree a -> b
foldrTree c n Tip = n
foldrTree c n (Node l v r) = foldr c (v `c` foldrTree …
Run Code Online (Sandbox Code Playgroud)

agda idris

11
推荐指数
2
解决办法
416
查看次数

如何使用它的BFS和DFS遍历来构造树

我有一棵树的遍历BFSDFS遍历.如何从这些遍历中重建树?

例如:

BFS Traversal : 4 3 5 1 2 8 7 6

DFS Traversal : 4 3 1 7 2 6 5 8
Run Code Online (Sandbox Code Playgroud)

然后树会像吼叫:

       4
      / \
     3   5    
    / \   \    
   2   1   8
   |   |         
   6   7      
Run Code Online (Sandbox Code Playgroud)

algorithm graph breadth-first-search tree-traversal depth-first-search

4
推荐指数
1
解决办法
5923
查看次数