우객망 검지offer-지그재그 순서로 두 갈래 나무 프린트

1636 단어 검지offer

제목 설명


함수는 지그재그로 두 갈래 트리를 인쇄합니다. 즉, 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 줄은 오른쪽에서 왼쪽으로, 세 번째 줄은 왼쪽에서 오른쪽으로, 다른 줄은 이와 같이 인쇄합니다.
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    // 
    // , , ( ) ( )
    vector > Print(TreeNode* pRoot) {
        vector > ans;
        stack sta1, sta2;
        if (pRoot == nullptr)
            return ans;
        sta1.push(pRoot);
        vector vec;
        while (!sta1.empty())
        {
            vec.clear();
            while (!sta1.empty())
            {
                if (sta1.top()->left != nullptr)
                    sta2.push(sta1.top()->left);
                if (sta1.top()->right != nullptr)
                    sta2.push(sta1.top()->right);
                vec.push_back(sta1.top()->val);
                sta1.pop();
                if (sta1.empty())
                    ans.push_back(vec);
            }
            vec.clear();
            while (!sta2.empty())
            {
                if (sta2.top()->right != nullptr)
                    sta1.push(sta2.top()->right);
                if (sta2.top()->left != nullptr)
                    sta1.push(sta2.top()->left);
                vec.push_back(sta2.top()->val);
                sta2.pop();
                if (sta2.empty())
                    ans.push_back(vec);
            }
        }
        return ans;
    }
};

좋은 웹페이지 즐겨찾기