이 문제에서는 이진 트리가 제공됩니다. 우리의 임무는 바이너리 트리의 모든 올바른 노드 중에서 최대값을 찾는 것입니다.
문제 설명: 여기에서 바이너리 트리의 모든 오른쪽 자식 노드 중에서 최대값을 찾아야 합니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력:
<강한>
출력: 9
설명:
모든 올바른 노드는 {2, 8, 9}입니다. 최대 9개입니다.
솔루션 접근 방식
문제를 해결하려면 트리를 탐색하고 올바른 자식이 있는지 확인해야 합니다. 존재한다면 maxRight 요소와 비교하여 크면 교체한다.
우리 솔루션의 작동을 설명하는 프로그램,
예시
#include <iostream> using namespace std; struct Node { int data; struct Node *left, *right; }; Node* newNode(int data) { Node* temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } int findMaxRightNode(Node* root) { int maxRight = -100; if (root == NULL) return -1; if (root->right != NULL) maxRight = root->right->data; return max( findMaxRightNode(root->right), max(maxRight, findMaxRightNode(root->left) ) ); } int main() { Node* root = newNode(5); root->left = newNode(3); root->right = newNode(2); root->left->left = newNode(1); root->left->right = newNode(8); root->right->left = newNode(6); root->right->right = newNode(9); cout<<"The maximum among all right nodes in Binary Tree is "<< findMaxRightNode(root); return 0; }
출력
The maximum among all right nodes in Binary Tree is 9