Programming 썸네일형 리스트형 스레드 이진트리(Thread Binary Tree)를 위한 노드 클래스 ##뭔가 오류가 있음 #pragma once#ifndef ___ThreadedBinTree#define ___ThreadedBinTree//스레드 이진트리(Thread Binary Tree)를 위한 노드 클래스//스레드 이진 트리는 순회를 빠르게 하는 장점이 있으나 문제는 스레드를 설정하기 위하여 삽입이나 삭제 함수가 더 많은 일을 하여야 한다.#include "ThreadedBinNode.h"#include class ThreadedBinTree {ThreadedBinNode* root;public:ThreadedBinTree(): root(NULL) {}void setRoot(ThreadedBinNode* node) { root = node; }bool isEmpty() { return root = NULL; } //스레.. 더보기 스레드 이진트리(Thread Binary Tree)를 위한 노드 클래스 #pragma once#ifndef ___ThreadBinNode#define ___ThreadBinNode//스레드 이진트리(Thread Binary Tree)를 위한 노드 클래스class ThreadBinNode{int data;ThreadBinNode* left;ThreadBinNode* right;public: bool bThread;ThreadBinNode(int val,ThreadBinNode* l, ThreadBinNode* r,bool bTh) : data(val), left(l), right(r), bThread(bTh) {}int getData() { return data; }void setRight(ThreadBinNode *r) { right = r; }ThreadBinNode* g.. 더보기 DataStructure - 이진트리 이진트리 순회 방법의 선택 - 순서는 중요치 않고 노드를 전부 방문하기만 하면 된다면 전위, 중위, 후위 순회 중 어떤 것이든지 관계없다. 예를 들어, 트리의 모든 노드 값을 순서 와 상관없이 출력하기만 한다면 순회 방법은 중요하지 않다. - 자식 노드를 처리한 다음에 부모 노드를 처리해야 하는 문제라면 당연히 후위순회를 사용하여야 한다. 왜냐하면 하위 디렉터리의 용량이 계산되어야 만이 현재의 디렉터리 용량을 계산할 수 있기 때문이다. - 부모 노드를 처리한 다음에 자식 노드를 처리해야 한다면 전위 순회를 사용하여야 한다. 예를 들어, 모든 노드의 레벨을 계산하기 위해서는 전위 순회를 사용해야 한다. 루트 노드의 레벨이 1이고 어떤 노드의 레벨은 부모 노드의 레벨보다 1이 크기 때문이다. 스레드 이진트리.. 더보기 BinaryNode.h : 이진 트리를 위한 노드 클래스 #pragma once#ifndef ___BinaryNode#define ___BinaryNode//BinaryNode.h : 이진 트리를 위한 노드 클래스#include class BinaryNode{protected:int data;//트리에 저장할 데이터BinaryNode* left;//왼쪽 자식 노드의 포인터BinaryNode* right;//오른쪽 자식 노드의 포인터public:BinaryNode(int val = 0, BinaryNode* l = NULL, BinaryNode* r = NULL): data(val), left(l), right(r) {}void setData(int val) { data = val; }void setLeft(BinaryNode* l) { left = l; }vo.. 더보기 LinkedDeque.h : 연결된 덱 클래스 #pragma once#ifndef ___DbLinkedDeque#define ___DbLinkedDeque#include "DblinkedList.h"//Node 클래스 포함//LinkedDeque.h : 연결된 덱 클래스 class LinkedDeque : public DbLinkedList {public:void addFront(Node2 *n) { insert(0, n); }Node2* deleteFront() { return remove(0); }Node2* getFront() { return getEntry(0); }void addRear(Node2* n) { insert(size(), n); }Node2* deleteRear() { return remove(size() - 1); }Node2.. 더보기 DblinkedList.h : 이중 연결 리스트 클래스 #pragma once#ifndef ___DblinkedList#define ___DblinkedList#include "Node2.h"//DblinkedList.h : 이중 연결 리스트 클래스class DbLinkedList {Node2org;//헤드노드public:DbLinkedList() : org(0) {}//생성자~DbLinkedList() { while (!isEmpty()) delete remove(0); }//소멸자void clear() { while (!isEmpty()) delete remove(0); }Node2* getHead() { return org.getNext(); }bool isEmpty() { return getHead() == NULL; } Node2* getEntry(.. 더보기 Node2.h : 이중연결리스트 노드를 나타내기 위한 클래스 #pragma once#ifndef ___Node2#define ___Node2//Node2.h : 이중연결리스트 노드를 나타내기 위한 클래스#include class Node2 {Node2*prev;//선행 노드를 가리키는 포인터 변수Node2*next;//후속 노드를 가리키는 포인터 변수intdata;//데이터 필드public:Node2(int val = 0) : data(val), prev(NULL), next(NULL) {}Node2* getPrev() { return prev; }Node2* getNext() { return next; }void setPrev(Node2* p) { prev = p; }void setNext(Node2* n) { next = n; }void display() { .. 더보기 LinkedList.h : 단순 연결 리스트 클래스 #pragma once#ifndef ___LinkedList#define ___LinkedList//LinkedList.h : 단순 연결 리스트 클래스 #include "Node_Int.h"class LinkedList {Node org;//헤드 노드(헤드 포인터가 아님)public:LinkedList(): org(0) {}//생성자~LinkedList() { clear(); }//소멸자void clear(){ while (!isEmpty()) delete remove(0); }Node* getHead() { return org.getLink(); }bool isEmpty() { return getHead() == NULL; } //pos번째 항목을 반환함Node* getEntry(int pos) {No.. 더보기 이전 1 ··· 16 17 18 19 20 21 22 ··· 38 다음