Submission

Status:

--------------------

Subtask/Task Score:

0/100

Score: 0

User: Gunto

Problemset: Abacus

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-09 16:45:57

#include<bits/stdc++.h>
using namespace std;
class Node{
    public:
    int data;
    Node* right;
    Node* left;
    Node(int val){
        data = val;
        right =NULL;
        left = NULL;
    }
};
void makeTree(Node* &root,vector<int> arr);//using queue
//this funcition for simulate like Geekforgeek
void leaf(Node* &root,vector<int> &oleft);
void left(Node* &root,vector<int> &oleft);
bool isLeaf(Node* &root);
int main(){
    //vector<char> root1 = {'1', '2', '3', '4', '5', '6', '7', 'N', 'N', '8', '9', 'N', 'N', 'N', 'N'};
    //change into thiss
    vector<int> root = {1,2,3,4,5,6,7,0,0,8,9,0,0,0,0};
    Node* ro = NULL;
    makeTree(ro,root);
    //ro == root That i can use in trem tree
    vector<int> oleft ;
    left(ro,oleft);
    leaf(ro,oleft);
    for(int i:oleft)cout<<i<<"\n";
    // vector<int> oleaf = leaf(ro);
    // vector<int> oright = right(ro);
    return 0;
}
void left(Node* &root,vector<int> &oleft){
    if(root->left!=NULL){
        oleft.push_back(root->data);
        left(root->left,oleft);
        return ;
    }
}
void leaf(Node* &root,vector<int> &oleft){
    if(isLeaf(root)==true){
        oleft.push_back(root->data);
        return ;
    }else{
        leaf(root->left,oleft);
        leaf(root->right,oleft);
    }
}
bool isLeaf(Node* &root){
    return (root->left == NULL)&&(root->right==NULL);
}


//BfS FOR create tree
void makeTree(Node* &root,vector<int> arr){
    queue<Node*> dp;

    root = new Node(arr[0]);
    dp.push(root);

    int i = 1;

    while(!dp.empty() && i < arr.size()){
        Node* parent = dp.front();
        dp.pop();

        if(i < arr.size()){
            Node* newNa = new Node(arr[i]);
            parent->left = newNa;
            dp.push(newNa);
            i++;
        }

        if(i < arr.size()){
            Node* newNb = new Node(arr[i]);
            parent->right = newNb;
            dp.push(newNb);
            i++;
        }
    }
}