2014-07-13 13 views
0

B- 트리에서 작업하고 있지만 어떻게 작동하는지 이해할 수 없습니다.B- 트리에 쌍 키 - 값 저장

몇 가지 예를 살펴보면이 구조의 코드를 작성하는 방법을 설명하는 page을 발견했습니다.

문제는 다음과 같습니다

가 어떤 범위에 저장 모든 키가, 어떤 부분에서 내 데이터를 발견 할 수있는, 내 트리의 노드 인 경우
class BTreeNode { 
    private 
     int *keys; // An array of keys 
     int t;  // Minimum degree (defines the range for number of keys) 
     BTreeNode **C; // An array of child pointers 
     int n;  // Current number of keys 
     bool leaf; // Is true when node is leaf. Otherwise false 
    public: 
     BTreeNode(int _t, bool _leaf); // Constructor 

    friend class BTree; 
}; 

? 문자열을 저장한다고 가정하면 어떻게 그 문자열을 얻을 수 있습니까?

내가 좋아하는 뭔가 싶어 ...

BTree.getById(4); 

을 내가 그와 관련된 ID로 일부 데이터를 얻으려면 다음

BTree.insert(1,'hello'); 
BTree.insert(2,' '); 
BTree.insert(3,'world'); 
BTree.insert(4,'!'); 

을하지만, 어떻게 내 노드 strcture을 선언 할 수 있습니다 그런 식으로?

감사합니다.

+0

B- 트리 란 무엇입니까? 어쩌면 당신은 B? 이진 트리? 바이너리의 경우, 각 노드는 2 개 이상의 자식을 가질 수 없습니다. – armanali

+0

@armanali B- 트리는 노드 당 0 개 이상의 자식이있는 트리입니다. 이진 트리는 노드 당 2 개 이하의 최상위 제한이있는 동일하다고합니다. B- 트리는 일반적으로 첫 번째 키 (왼쪽 모드 하위), "각 키 쌍 (내부 자식)"및 "더 큰"키보다 "적은"하위 키를 나타내는 자식 노드와 함께 노드 당 키 페이지를 사용합니다 "마지막 키 (가장 오른쪽 자식)보다. 따라서 N 키의 페이지가있는 노드는 N + 1 명의 자식을 가질 수 있습니다. 이진 트리는 노드 당 * 단일 * 키 (페이지 중 하나)가있는 B- 트리이며, 거기에는 "덜"또는 "큰"가능한 하위가 있습니다. – WhozCraig

+0

틀린 http://en.wikipedia.org/wiki/B-tree –

답변

2

두 가지.

문자열을 참조 할 때는 먼저 큰 따옴표 "을 사용해야합니다. 작은 따옴표는 한 문자를 가리키며 오류가 발생합니다.

두 번째로, 링크 한 코드는 정수를 저장하도록 만들어졌습니다. 네, 타입을 저장하기 위해 그것을 확장 할 수는 있지만, 정수로 무엇을하는지 먼저 이해하는 것이 좋습니다.

일단 이해했다면 클래스를 템플릿으로 확장하거나 간단히 키 유형 (현재 int)을 대신 키 - 값 쌍으로 선언하십시오.