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

Chương trình tìm hình chiếu bên trái của cây nhị phân trong C ++

Giả sử chúng ta có một cây nhị phân, nếu chúng ta nhìn cây từ phía bên trái, thì chúng ta có thể thấy một số phần tử của nó. chúng ta phải hiển thị các yếu tố đó. Vì vậy, nếu cây như -

Chương trình tìm hình chiếu bên trái của cây nhị phân trong C ++

Đầu ra sẽ là [1,2,5]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định ret mảng

  • Định nghĩa một hàm dfs (), hàm này sẽ lấy nút, c khởi tạo nó bằng 1,

  • nếu nút là null, thì -

    • trở lại

  • nếu c> lvl, thì -

    • lvl:=c

    • chèn giá trị của nút vào ret

  • dfs (bên trái của nút, c + 1)

  • dfs (bên phải của nút, c + 1)

  • Từ phương thức chính, thực hiện như sau -

  • lvl:=-1

  • dfs (gốc, 0)

  • trả lại ret


Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class TreeNode{
   public:
   int val;
   TreeNode *left, *right;
   TreeNode(int data){
      val = data;
      left = right = NULL;
   }
};
class Solution {
   public:
   vector <int> ret;
   int lvl;
   void dfs(TreeNode* node, int c = 1){
      if(!node)
         return;
      if(c > lvl){
         lvl = c;
         ret.push_back(node->val);
      }
      dfs(node->left, c + 1);
      dfs(node->right, c + 1);
   }
   vector<int> solve(TreeNode* root) {
      lvl = -1;
      dfs(root, 0);
      return ret;
   }
};
main(){
   TreeNode *root = new TreeNode(1);
   root->left = new TreeNode(2);
   root->right = new TreeNode(3);
   root->left->right = new TreeNode(5);
   root->right->right = new TreeNode(4);
   Solution ob;
   print_vector(ob.solve(root));
}

Đầu vào

TreeNode *root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->right = new TreeNode(5);
root->right->right = new TreeNode(4);

Đầu ra

[1,2,5]