vendredi 6 décembre 2019

ZigZag level order traversal BT

I am tried to this question for so many times but I don't know what is wrong in my code, please help me find a bug in this,

problem reference: https://www.interviewbit.com/problems/zigzag-level-order-traversal-bt/ https://www.geeksforgeeks.org/zigzag-tree-traversal/

vector<vector<int>> Solution::zigzagLevelOrder(TreeNode* root) {
vector<vector<int>> vf;
vector<int> v;
if(A==NULL){
    return vf;
}
TreeNode* temp=A;

bool turn=false;
stack<TreeNode*> s1;
stack<TreeNode*> s2;

s1.push(temp);

while(!s1.empty()||!s2.empty()){

if(turn==false){


    while(!s1.empty()){
        TreeNode* node=s1.top();
        v.push_back(node->val);

        if(node->left!=NULL){
            s2.push(node->left);
        }
        if(node->right!=NULL){
            s2.push(node->right);
        }

        s1.pop();
    }

     if(s1.empty()){
        turn=true;
    }
}
else if(turn==true){

    while(!s2.empty()){
        TreeNode* node=s2.top();
        v.push_back(node->val);

        if(node->left!=NULL){
        s1.push(node->right);}
        if(node->right!=NULL){
        s1.push(node->left);}

        s2.pop();
    }
    if(s2.empty()){
        turn=false;
    }
}

vf.push_back(v);
v.clear();

}


return vf;

}

Aucun commentaire:

Enregistrer un commentaire