우리는 Haskell에서 데이터 타입, 삽입 함수 및 디스플레이 함수를 쓰는 것처럼 2-3-4 트리를 생성하라는 요청을 받았습니다.Haskell 2-3-4 Tree
저는이 종류의 트리에 대한 정보를 얻는 것이 매우 어렵다는 것을 알고 있습니다. (Java, C++).
내가 지금까지 무엇을 가지고 -
data Tree t = Empty
| Two t (Tree t)(Tree t)
| Three t t (Tree t)(Tree t)(Tree t)
| Four t t t (Tree t)(Tree t)(Tree t)(Tree t) deriving (Eq, Ord, Show)
leaf2 a = Two a Empty Empty
leaf3 a b = Three a b Empty Empty Empty
leaf4 a b c = Four a b c Empty Empty Empty Empty
addNode::(Ord t) => t -> Tree t -> Tree t
addNode t Empty = leaf2 t
addNode x (Two t left right)
| x < t = Two t (addNode x left) right
| otherwise = Two t left (addNode x right)
이 컴파일하지만은 3 개 노드 또는 네 개의 노드로 삽입을 쓰기 시작하는 방법이 맞습니다 확실하지만, 확실하지 아니에요.
표시 기능에 대한 "표시 표시"가 충분하지 않아 다이어그램에 일반적으로 나타나는 형식으로 트리를 인쇄해야한다고 지정되어 있습니다. 다시 말하지만, 이걸로가는 길을 모릅니다.
도움이나 조언을 주시면 감사하겠습니다.
2-3-4 나무에 대한 위키 백과 문서를 읽었습니까? 삽입 알고리즘에 대한 설명을 이해 했습니까? 그렇다면 Haskell에서 구현하려는 부분을 정확히 설명 할 수 있습니까? 그렇지 않다면 이해하지 못한 부분을 설명하십시오. – sepp2k
아, Show 인스턴스 관련 : 하스켈에서 인스턴스를 정의하는 방법을 알고 계십니까? 당신의 트리에 대한 쇼 기능이 어떻게 생겼는지에 대한 아이디어가 있습니까? 어떤 문제가 발생 했습니까? – sepp2k
또한 표준 Data.Tree 모듈의 [drawTree] 함수 (http : // hackage.haskell.org/packages/archive/containers/0.4.2.0/doc/html/Data-Tree.html # v : drawTree)를 작성하고 해당 유형에 어떻게 적용할지 생각해보십시오. –