Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tối đa (hoặc tối thiểu) trong Cây nhị phân trong C ++

Trong bài toán này, chúng ta được đưa ra một cây nhị phân. Nhiệm vụ của chúng ta là Tìm tối đa (hoặc tối thiểu) trong Cây nhị phân.

Mô tả sự cố: Chúng ta cần tìm các nút của cây nhị phân có giá trị lớn nhất và nhỏ nhất trong cây nhị phân.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào:

Tìm tối đa (hoặc tối thiểu) trong Cây nhị phân trong C ++

Đầu ra: max =9, min =1

Phương pháp tiếp cận giải pháp

Chúng ta cần tìm nút tối đa của cây nhị phân. Chúng tôi sẽ thực hiện việc này bằng cách duyệt qua con trỏ cho đến khi chúng tôi đến nút lá và sau đó tìm nút tối đa của cây.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <iostream>
using namespace std;

class Node {
   public:
      int data;
      Node *left, *right;
   
      Node(int data) {
         this->data = data;
         this->left = NULL;
         this->right = NULL;
      }
};

int findMaxNode(Node* root) {
   
   if (root == NULL)
      return -100;

   int maxVal = root->data;
   int leftMaxVal = findMaxNode(root->left);
   int rightMaxVal = findMaxNode(root->right);
   if (leftMaxVal > maxVal)
      maxVal = leftMaxVal;
   if (rightMaxVal > maxVal)
      maxVal = rightMaxVal;
   return maxVal;
}

int main() {
   
   Node* NewRoot = NULL;
   Node* root = new Node(5);
   root->left = new Node(3);
   root->right = new Node(2);
   root->left->left = new Node(1);
   root->left->right = new Node(8);
   root->right->left = new Node(6);
   root->right->right = new Node(9);
   cout<<"The Maximum element of Binary Tree is "<<findMaxNode(root) << endl;
   return 0;
}

Đầu ra

The Maximum element of Binary Tree is 9