컴공 일기182
게시글 주소: https://orbi.kr/00058371421

객체지향... C++ 기반의 이진트리 간략 예제입니다.
Iterator는 구현은 따로 하지 않았는데, Iterator까지 구현을 해야 C++ 스러운 예제가 아닌가 해요.
무튼.. C 기반의 이진트리 설계랑 다른 것은, 아무래도 객체화가 되었다는 거겠죠.
여기서 문제는, 과연 "무엇을 객체화 시키느냐?" 일 겁니다. 이걸 따지는 게 굉장히 어렵습니다.
TreeNode class와 Tree의 class를 자연스럽게 분리시켜서, 모든 관계가 잘 정리되었습니다만, 이 흐름까지 초보 개발자 스스로 도달하는 데에는 굉장히 많은 시행착오와 고민들이 필요할 겁니다. 현재 제 상황이 이렇습니다.
그래선지 객체지향이 때로, 굉장히 어렵게 다가오는 것이 바로 이 지점입니다. 어떻게 설계를 하고, 무엇을 객체화 해야 하는가. 이것을 답해나가는 것이 현대 개발자의 임무 중 하나일텐데, 이게 참 쉽지 않습니다. 그래서, 공부 뿐 아니라, 개발에 대한 날렵한 경험들이 필요한 것 같구요.
using namespace std;
template <typename T>
class Tree;
template <typename T>
class TreeNode {
friend class Tree<T>;
private:
T data;
TreeNode* left;
TreeNode* right;
public:
//동적 할당을 받을 것은 딱히 아니므로 destructor에 대한 이슈는 크게 신경쓰지 말자.
TreeNode(T data = 0, TreeNode* left = null, TreeNode* right = null)
{
this->data = data;
this->left = left;
this->right = right;
}
};
template <typename T>
class Tree
{
private:
TreeNode<T>* Root;
public:
explicit Tree(const T data = 0)
{
Root = new TreeNode<T>(data);
}
void Destroy(const TreeNode<T>* Root)
{
preorder(Root->left);
preorder(Root->right);
delete Root;
}
~Tree()
{
Destroy(this->Root);
cout << endl;
cout << "deleting Tree..." << endl;
}
TreeNode<T>* getRoot()
{
return Root;
}
void visit(const TreeNode<T>* current)
{
cout << current->data << " ";
}
void buildTree() {
Root->left = new TreeNode<T>('B', new TreeNode<T>('D', new TreeNode<T>('H')), new TreeNode<T>('E', new TreeNode<T>('I'), new TreeNode<T>('J')));
Root->right = new TreeNode<T>('C', new TreeNode<T>('F'), new TreeNode<T>('G', null, new TreeNode<T>('K')));
}
void preorder(TreeNode<T>* current)
{
if (current != null) {
visit(current);
preorder(current->left);
preorder(current->right);
}
}
};
int main()
{
Tree<char> tree('A');
tree.buildTree();
cout << "Preorder >> " << endl;
tree.preorder(tree.getRoot());
cout << endl;
return 0;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
좋아요 1 답글 달기 신고
-
좋아요 0 답글 달기 신고
-
2/3를 출석하라고?
-
수1 2 평가원 최저정답률만 모아놓은 학습자료 없나 1
서치해도 없네
-
국어를잘하는이원준이부럽구나...
-
못 만나 봄....
-
어떨까요 제기분이좋겟죠아마
-
가는 길 버스에서 6평 풀고 저녁에 해설하러 가야함 토깽이가 할 수 있을까..
-
현재 기원쌤 수강하면서 드릴6 풀고 있어요(막히는거 한두문제) 문제 빠르게 쳐내면서...
-
낼 학교 쉴까 0
오늘ㅇ,..여자친구랑도 헤어지고 낼 6교신데 수행이 5개 있네 곧 6모인데 이게...
-
국어 : '재수때 ㅈㄴ 다 했는데 수능에서 2등급으로 미끄러진거임 걍 실모랑 문학...
-
사료해석은 길이에 비해 쉽다고 생각합니다(사실 사료도 엄청 어렵게 만들려다가 실패)...
-
겨울이 가장좋아 4
벌레가 제일싫어 날파리,모기,진드기,화상벌레 등등 다 꺼져버려 빨리 벌레없는 겨울이왔으면
-
현대사에서 무난한 문항보다 살짝 더 깊게 들어갔습니다 그러나 힌트를 곳곳에 배치했고...
-
다들 왜 이런 얘기하는지 좀 알 거 같음 최근에 뭔가 그린라이트 떴다가 망한 적이...
-
가능한 모든 어려운주제 + 당황스러움까지 너무 벽이 느껴지는데
-
감귤 먹는 시골쥐의 우당탕탕 육지 여행 2(서울 편) 9
***사진 많아요. 데이터 & 스압 주의*** 전 편 아 부산에서 서울로 가는 게...
-
옯스타 맞팔해줘 2
unforgettablesnu
-
현실은 벌레만도 못했죠 몰랐어요 난 내가 버러지란 것을 괜찮지가 않아 난 모자르니까...
-
. 10
-
큐레깅!!!! 글씨 너무 예뽀오
-
좋은 밤 보내시고
-
죄책감시발
-
ㅈㄴ무서웠다 12
갑자기 누워있는데 화상벌레(청딱지개미반날개)가 나타난거임.. 그래서 당장 화장실가서...
-
자러 감 1
근데 자다가 죽으면 어캄
-
큰거왔다 1
캬 네버엔딩스토리라니
-
잡담글만 써야지
-
ㄹㅇ 다 존나 못하는데 입만 존나 터네 재명 마렵ㄴㅔ
-
수학. 물2만 쓸꺼야
-
자지마요 0
고추마요
-
이제 자야지 13
유튜브 하나만 보고 낼 더프 보는 사람들 잘자
-
문제집몇장푸나요 난이도상관 ㄴㄴ
-
허 11
이게 난이도 중이라고?
-
모킹버드 쓸꺼얌
-
좆이 내가 된다 2
좆된다
-
6모 묙포 잇음 3
10000점임
-
노래..추천 0
https://youtu.be/OB-ngSYIlV8?si=NQOsDmpFoKNV2pK...
-
와 극적Save. 간신히 분량도 다 채움 햐~
-
저 오늘 생일이애오 이륙이 소원입니다
-
중간에 스트레칭하고 방구끼는거 제외 다이렉트로 몇분정도 집중해서 문제푸심 전...
-
오르지 여러분들 15
안녕하십니까!
-
미적 과외생이 계속 벅벅 지우고 식 여기저기 적어가며 급하게 풀어서 오은영쌤마냥...
-
작수 52214 인가경에서 이정도면 감사해야지..ㅇㅇ
-
아 낼 왜 더프인거야 16
나 킬캠 해강 나머지 들어야한다고오오 시험치기 귀찮다고오 4등급뜨기 싫다고오
-
강민철은 뒷북쳐서 별로 김승리는 별것 아닌걸 굉장히 심각하게 말해서 별로 김동욱은...
-
저런게 재능이구나 싶음 그냥
-
보통 수능전까지 5
과목당 실모 얼만큼 푸나요? 100개 넘게 푼다는 글을 봐서
-
반박 안받음
-
지금까지 본 학평, 더프 다 14152122확통주관식2개 이렇게 틀렸는데...
-
물2 개같이 1컷 50 화2 무난하게 1컷 45? 생2 n수생 유입으로 1컷...
-
지2는 잠깐 나가있어 지1화2로 간다
-
지금 테스트이즈리듬 듣는데 좀만 내용 어려워지면 내용이 붕 떠서 정석민쌤 국어...