Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เขียนโปรแกรมหาความลึกหรือความสูงของต้นไม้ใน C++


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

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

เขียนโปรแกรมหาความลึกหรือความสูงของต้นไม้ใน C++


ความสูงของต้นไม้คือ 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