我在Haskell中实现了二叉树数据结构。
我的代码:
module Data.BTree where
data Tree a = EmptyTree
| Node a (Tree a) (Tree a)
deriving (Eq, Ord, Read, Show)
emptyTree :: a -> Tree a
emptyTree a = Node a EmptyTree EmptyTree
treeInsert :: (Ord a) => a -> Tree a -> Tree a
tre
我需要在二叉树中找到所有可能的子树:
allSubtrees :: BinaryT a -> [BinaryT a]
allSubtrees = undefined
这棵树是:
data BinaryT a =
Empty
| Node (BinaryT a) a (BinaryT a)
deriving (Eq, Show)
我是Haskell的新手,我知道在Haskell中没有while for⁄循环。Haskell完全是关于递归的。我的问题是,如何在没有无限递归的情况下获得树的所有可能的子树?
这是教科书上的一个问题,答案是关于二叉树的。
如果后置遍历访问二叉树的节点,以U,G,T,R,A,I的顺序存储字符值,那么同一棵二叉树的无序遍历的访问顺序是什么?
( a) I、G、U、A、T、R
( b) R、G、U、I、T、A
( c) G、U、I、T、A、R
( d)无法确定
答:C
现在的问题是,C是如何回答的。我意识到,仅进行一次后期遍历并不足以唯一地标识一棵树,而且可以为任何类型的树(不是无序的)定义预顺序遍历和后置遍历,但不能对一棵树进行唯一标识。顺序和顺序后的遍历可以。这个问题并不是专门针对BST的,这样可以产生不同的效果。所以我想我需要澄清关于C的答案,而不是D,这就是我所
我是Haskell的初学者,在理解我收到的警告方面遇到了一些困难。我实现了一个二叉树,
data Tree a = Nil | Node a (Tree a) (Tree a) deriving (Eq, Show,
Read)
它工作得很好,但我在这段代码中得到了不完整的模式警告。
get :: Ord a => a -> Tree a -> Maybe a
get _ Nil = Nothing
get x (Node v lt rt)
| x == v = Just x
| x < v = get x lt
| x > v = ge
我正在浏览在线书籍(链接将直接带您到我的问题所涉及的部分)。
作者定义了二叉树数据类型,并展示了如何通过实现Data.Foldable函数使其成为可折叠类型(在foldMap中定义)的实例:
import Data.Monoid
import qualified Data.Foldable as F
data Tree a = Empty | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
instance F.Foldable Tree where
foldMap f Empty = mempty
foldMap f
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not roo
我在Haskell中对二叉树的定义如下:
data BTree x = Nil | BNode x (BTree x) (BTree x)
然后,我对这种数据类型进行了折叠定义:
foldB :: (x -> u -> u -> u) -> u -> BTree x -> u
foldB f a Nil = a
foldB f a (BNode x l r) = f x (foldB f a l)(foldB f a r)
因此,我希望我可以简单地使这个函数将所有的值加在一起:
sumBFold :: (Num a) => BTree a ->
我试图了解递归是如何工作的,遍历二叉树是如何工作的。
据我所知,递归是在它里面调用一个函数。有点像循环。
现在,我得到了关于如何在二叉树上执行postOrder遍历的代码。
(请注意,这不是我的代码,我只是想了解递归是如何通过这段代码工作的)
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class So