首页 > 解决方案 > Haskell 函数检查给定值是否在树中

问题描述

我正在尝试创建一个函数来检查给定值是否在树中,这是迄今为止得到的

data Tree = Null | 
     Node Int Tree Tree
     deriving (Show)

testTree = Node 20 (Node 3 (Node 12 Null Null) (Node 7 Null Null))
                  (Node 8 (Node 4 (Node 6 Null Null) Null) Null)

isMember :: Int->Tree -> Bool
isMember  x (Null)     = False
isMember  x(Node n st1 st2) = x == n 

它没有给我任何错误,但我也想检查子树

标签: haskell

解决方案


您只需要根据需要isMember在每个子树上递归调用。

isMember :: Int -> Tree -> Bool
isMember x Null = False
isMember x (Node n st1 st2) = x == n || isMember x st1 || isMember x st2

推荐阅读