트리 베이스

레이어드 구조 가지다 데이터 표현하다 ~을 위한 구조

마디(마디): 데이터 표현하다

트렁크(가장자리): 마디 계층 구조 표현하다 ~을 위한 사용


이것 나무 구조 가지다 할 때 코드 화신

#include <iostream>
#include <vector>
#include <stack>
#include <list>
#include <queue>
using namespace std;

using NodeRef = shared_ptr<struct Node>;

struct Node
{
	Node() {}
	Node(const string& data) : data(data) {}
	string			data;
	vector<NodeRef>	childen;
};

NodeRef CreateTree()
{
	NodeRef root = make_shared<Node>("R1 개발실");
	{
		{
			NodeRef node = make_shared<Node>("디자인팀");
			root->childen.push_back(node);
			{
				NodeRef leaf = make_shared<Node>("전투");
				node->childen.push_back(leaf);
			}
			{
				NodeRef leaf = make_shared<Node>("경제");
				node->childen.push_back(leaf);
			}
			{
				NodeRef leaf = make_shared<Node>("스토리");
				node->childen.push_back(leaf);
			}
		}
		{
			NodeRef node = make_shared<Node>("프로그래밍팀");
			root->childen.push_back(node);
			{
				NodeRef leaf = make_shared<Node>("서버");
				node->childen.push_back(leaf);
			}
			{
				NodeRef leaf = make_shared<Node>("클라");
				node->childen.push_back(leaf);
			}
			{
				NodeRef leaf = make_shared<Node>("엔진");
				node->childen.push_back(leaf);
			}
		}
		{
			NodeRef node = make_shared<Node>("아트팀");
			root->childen.push_back(node);
			{
				NodeRef leaf = make_shared<Node>("배경");
				node->childen.push_back(leaf);
			}
			{
				NodeRef leaf = make_shared<Node>("케릭터");
				node->childen.push_back(leaf);
			}
		}
	}

	return root;

}

void PrintTree(NodeRef root, int depth)
{
	for (int i = 0; i < depth; i++)
		cout << "-";

	cout << root->data << endl;

	for (NodeRef& child : root->childen)
		PrintTree(child, depth+1);
}

//깊이(depth) :  루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수(aka. 몇층?)
//높이(height) : 가장 깊숙히 있는 노드의 깊이(max(depth))
int GetHeight(NodeRef root)
{
	int height = 1;

	for (NodeRef& child : root->childen)
	{
		height = max(height, GetHeight(child) + 1);
	}

	return height;
}

int main()
{
	NodeRef root = CreateTree();

	PrintTree(root, 0);

	int count = GetHeight(root);
	cout << "Three height : " << count << endl;

	return 0;
}

Similar Posts

  • 한약 다이어트, 혹시 나에게도 ‘부작용’이? 솔직 후기와 궁금증 풀이

    안녕하세요! 건강한 아름다움을 꿈꾸는 여러분, 혹시 ‘한약 다이어트’에 대해 들어보셨거나, 현재 고민 중이신가요? 최근 몇 년 사이 한약 다이어트는 단순히 체중 감량을 넘어, 전반적인 건강 증진까지 기대할 수 있다는 입소문을 타며 많은 분들에게 관심을 받고 있습니다. 하지만 동시에 “혹시 부작용은 없을까?” 하는 걱정 또한 떨칠 수 없을 텐데요. 저 역시 한약 다이어트를 경험하면서 비슷한 고민을…

  • 레이저 조사기: 혁신적인 측정 도구의 모든 것

    레이저 조사기는 현대 공학과 건축 분야에서 필수적인 도구로 자리잡고 있습니다. 각종 거리와 각도를 정확하게 측정할 수 있는 이 기기는 특히 널리 사용되고 있으며, 그 필요성은 날로 증가하고 있습니다. 아래에서는 레이저 조사기의 기능, 장점, 그리고 선택 시 고려해야 할 사항을 자세히 살펴보겠습니다. 레이저 조사기의 주요 기능 레이저 조사기는 많은 기능을 제공하여 사용자에게 탁월한 편의성을 제공합니다. 아래는…

  • 회원 관리 예시 – 배경 개발

    조직의 비즈니스 요구 사항 데이터: 회원ID, 이름기능: 가입하기, 확인하다데이터 저장소를 선택하지 않았습니다.(가상 시나리오) 일반적인 웹 애플리케이션 계층 컨트롤러: Web MVC에서 컨트롤러의 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 액세스하고 데이터베이스의 도메인 개체를 저장 및 관리합니다. 도메인: 비즈니스 도메인 객체 예시 멤버십 주문 쿠폰은 주로 데이터베이스에 저장 및 관리됩니다. 클래스 종속성 데이터 저장소가 선택되지 않았기…

  • 혈관 수술이나 혈액 순환에 문제가 있는 경우

    혈액 순환이 좋지 않으면 손과 발이 쉽게 부어올 수 있습니다.이것을 완화하기 위해, 스트레칭, 스트레칭, 스트레칭, 스트레칭, 스트레칭, 스트레칭, 건강 지원을 받을 것입니다.물론, 아무도 경험할 수 있는 현상이지만, 끊임없이 반복적이고 방해한다면 혈관 수술을 통해 혈관 수술을 통해 다른 문제가 있는지 확인할 필요가 있다.쥐, 가려움, 가려움, 차가운 발은 가난한 혈액 흐름에 의해 야기될 수 있는 문제가 있다.또한…

  • 송곳니 슬개골 탈구 및 예방

    여름을 구한 한여름밤 ◈ 개의 슬개골 탈구의 증상, 분류 및 치료 슬개골 탈구는 많은 개에게 영향을 미치는 일반적인 정형외과 질환입니다. 슬개골이 정상적인 위치에서 빠져나와 다리 옆으로 미끄러져 들어오거나 나갈 때 발생합니다. 슬개골이 탈구된 다리는 불편함, 통증 및 파행을 유발할 수 있습니다. 치료하지 않고 방치하면 관절염이나 십자인대 파열로 이어질 수 있습니다. 적절한 치료와 예방은 신중하게 이루어져야…

  • 상대적인 꿈

    상대적인 꿈 전반적인 조직. 꿈해몽 꿀팁을 모아봤습니다. 꿈의 특정 상황에 따라 꿈의 해석이 다를 수 있습니다. 최우선으로 조심해야 할 악몽이 있을 수 있으니, 꿈에서 모든 상황을 끝까지 볼 것입니다. 시간을 절약하려면 목차를 사용하여 내용을 빠르게 읽으십시오. 친척 꿈 해석 꿈에서 가장 중요한 것은 수면 중 무의식을 과거 무의식의 정신적 징후로 보기 때문에 중요하다고 믿는 전문…