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

In tất cả các mã lá của cây nhị phân từ trái sang phải bằng cách sử dụng Phương pháp tiếp cận lặp lại trong C ++


Trong bài toán này, chúng ta được cung cấp một cây nhị phân và chúng ta phải in tất cả các nút lá của cây nhị phân từ trái sang phải theo phương pháp lặp lại.

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

Đầu vào -

In tất cả các mã lá của cây nhị phân từ trái sang phải bằng cách sử dụng Phương pháp tiếp cận lặp lại trong C ++

Đầu ra - 1 4 7

Để giải quyết vấn đề này bằng cách sử dụng phương pháp lặp lại, chúng tôi sẽ sử dụng tìm kiếm theo độ sâu trước tiên (DFS). Đối với cây Traverse, chúng ta sẽ bắt đầu từ nút gốc và kiểm tra xem nó có phải là nút lá hay không, sau đó in ra nút khác, tìm các cây con của nó và duyệt qua các cây con con để tìm tất cả các nút lá.

Ví dụ

Đoạn mã dưới đây sẽ triển khai giải pháp của chúng tôi -

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
Node* insertNode(int data) {
   Node *temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
void printLTRLeafNodes(Node *root){
   if (!root)
      return;
   if (!root->left && !root->right) {
      cout<<root->data<<"\t";
      return;
   }
   if (root->left)
      printLTRLeafNodes(root->left);
   if (root->right)
      printLTRLeafNodes(root->right);
}
int main(){
   Node *root = insertNode(21);
   root->left = insertNode(5);
   root->right = insertNode(36);
   root->left->left = insertNode(2);
   root->right->left = insertNode(13);
   root->right->right = insertNode(4);
   root->right->left->left = insertNode(76);
   root->right->left->right = insertNode(9);
   root->right->right->left = insertNode(17);
   root->right->right->right = insertNode(2);
   cout<<"Leaf Nodes of the tree from left to rigth are :\n";
   printLTRLeafNodes(root);
   return 0;
}

Đầu ra

Leaf Nodes of the tree from left to right are −
2 76 9 17 2