ZigZag级别订单遍历BT

时间:2019-12-06 18:35:50

标签: c++11 binary-tree

我尝试了很多次这个问题,但是我不知道我的代码有什么问题, 请帮助我找到一个错误,

问题参考: 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;

}

0 个答案:

没有答案
相关问题