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++;
}
}
}