ในปัญหานี้ เราได้รับไบนารีทรี งานของเราคือ ค้นหาสูงสุด (หรือต่ำสุด) ในไบนารีทรี
คำอธิบายปัญหา: เราจำเป็นต้องค้นหาโหนดของไบนารีทรีที่มีค่าสูงสุดและต่ำสุดในไบนารีทรี
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล:
ผลลัพธ์: สูงสุด =9 , ต่ำสุด =1
แนวทางการแก้ปัญหา
เราต้องหาโหนดสูงสุดของต้นไม้ไบนารี เราจะทำสิ่งนี้โดยผ่านตัวชี้ไปจนถึงโหนดปลายสุดแล้วหาโหนดสูงสุดของต้นไม้
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#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; }
ผลลัพธ์
The Maximum element of Binary Tree is 9