이 문제에서는 이진 트리가 제공됩니다. 우리의 임무는 주어진 나무의 최대 깊이 또는 높이를 찾는 프로그램을 작성하는 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
나무의 높이는 3입니다.
트리의 최대 높이를 찾기 위해 왼쪽 및 오른쪽 하위 트리의 높이를 확인하고 둘의 최대값에 1을 더합니다. 이것은 트리의 마지막 노드가 발견되고 하나가 하위 트리의 높이를 찾기 위해 점진적으로 추가되는 것을 계속하는 재귀 프로세스입니다.
이 방법을 사용하여 위의 예를 해결했습니다.
트리의 높이 찾기, 즉 height(3) =max(height(5),height(7)) + 1.
이를 위해 값이 5와 7인 노드의 높이를 계산합니다.
높이(5) =최대(높이(1), 높이(9)) + 1 및
height(7) =1, 구성할 수 있는 하위 트리가 없습니다.
마찬가지로 높이(1) =높이(9) =1
높이(5) =최대(1,1) +1 =2
높이(3) =최대(높이(5), 높이(7)) + 1 =최대(2,1) + 1 =3.
따라서 높이는 3이 됩니다.
솔루션을 설명하는 프로그램,
예시
#include <iostream> using namespace std; class node { public: int data; node* left; node* right; }; int height(node* node) { if (node == NULL) return 0; else { int lDepth = height(node->left); int rDepth = height(node->right); if (lDepth > rDepth) return(lDepth + 1); else return(rDepth + 1); } } node* insertNode(int data) { node* Node = new node(); Node->data = data; Node->left = NULL; Node->right = NULL; return(Node); } int main() { node *root = insertNode(4); root->left = insertNode(5); root->right = insertNode(0); root->left->left = insertNode(1); root->left->right = insertNode(9); cout<<"The height of the given binary tree is "<<height(root); return 0; }
출력
The height of the given binary tree is 3