ในปัญหานี้ เราได้รับไบนารีทรี งานของเราคือการเขียนโปรแกรมเพื่อค้นหาความลึกหรือความสูงสูงสุดของต้นไม้ที่กำหนด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ความสูงของต้นไม้คือ 3.
ในการหาความสูงสูงสุดของต้นไม้ เราจะตรวจสอบความสูงของต้นไม้ย่อยด้านซ้ายและขวาของต้นไม้ และเพิ่มหนึ่งเข้าไปที่ค่าสูงสุดของทั้งสอง นี่เป็นกระบวนการแบบเรียกซ้ำซึ่งจะดำเนินต่อไปโดยพบโหนดสุดท้ายในทรี และจะมีการเพิ่มโหนดหนึ่งๆ ไปเรื่อย ๆ เพื่อค้นหาความสูงของทรีย่อย
ตัวอย่างข้างต้นแก้ไขโดยใช้วิธีนี้
การหาความสูงของต้นไม้ เช่น height(3) =max(height(5),height(7)) + 1
สำหรับสิ่งนี้ เราจะคำนวณความสูงของโหนดด้วยค่า 5 และ 7
height(5) =max(height(1),height(9)) + 1 and
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