이 튜토리얼에서는 n-ary 트리의 깊이를 찾는 방법을 배울 것입니다.
n-ary 트리는 트리의 각 노드가 n개 이하인 트리입니다. 자식 노드.
n-ary 트리의 깊이를 찾아야 합니다. 벡터를 사용하여 트리에 있는 각 노드의 자식을 저장합니다.
문제를 해결하는 단계를 살펴보겠습니다.
-
더미 데이터로 트리를 초기화합니다.
-
n-ary 트리의 깊이를 찾는 재귀 함수를 작성하십시오.
-
트리의 최대 깊이를 저장할 변수를 초기화합니다.
-
각 노드의 자식을 반복합니다.
-
최대 깊이는 현재 최대 깊이와 노드 자식의 깊이의 최대값입니다.
-
최대 깊이 변수가 maxDepth라고 가정하면 및 maxDepth =max(maxDepth, findDepthOfTree(*children) 트리의 깊이를 찾는 재귀 문입니다.
-
-
트리의 최종 최대 깊이는 maxDepth + 1입니다. .
-
-
트리의 최대 깊이를 인쇄합니다.
예시
코드를 봅시다.
#include <bits/stdc++.h> using namespace std; struct Node { int data; vector<Node *> child; }; Node *newNode(int data) { Node *temp = new Node; temp->data = data; return temp; } int findDepthOfTree(struct Node *node) { if (node == NULL) { return 0; } int maxDepth = 0; for (vector<Node*>::iterator it = node->child.begin(); it != node->child.end(); it++) { maxDepth = max(maxDepth, findDepthOfTree(*it)); } return maxDepth + 1; } int main() { Node *root = newNode(1); root->child.push_back(newNode(2)); root->child.push_back(newNode(3)); root->child.push_back(newNode(4)); root->child[2]->child.push_back(newNode(1)); root->child[2]->child.push_back(newNode(2)); root->child[2]->child.push_back(newNode(3)); root->child[2]->child.push_back(newNode(4)); cout << findDepthOfTree(root) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
3
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.