검지offer: 두 갈래 나무를 여러 줄로 인쇄하기

1179 단어

제목 설명


위에서 아래로 층별로 두 갈래 트리를 인쇄하고 같은 층의 결점은 왼쪽에서 오른쪽으로 출력합니다.층마다 줄을 출력합니다.
 
바로 두 갈래 나무의 층계가 두루 돌아다니는 것이다
우선 반드시 공백을 판정한 후에 보조 대열을 이용하여 처리해야 한다
매번push가 하나의 루트 노드에 들어갈 때마다 좌우 노드가 비어 있는지 없는지를 순서대로 판단하고 비어 있지 않으면 대기열에 눌러 다음 처리를 한다
class Solution {
public:
    vector > Print(TreeNode* pRoot)
    {
        vector> result;
        if (pRoot == nullptr)
            return result;
        // 
        queue q;
        //     push 
        q.push(pRoot);
 
        // 
        while (!q.empty())
        {
            vector temp;
            int start = 0;
            int end = q.size();
            while (start < end)
            {
                TreeNode* node = q.front();
                q.pop();
                temp.push_back(node->val);
                if (node->left != nullptr)
                    q.push(node->left);
                if (node->right != nullptr)
                    q.push(node->right);
                start++;
            }
            result.push_back(temp);
        }
        return result;
    }
 
};

좋은 웹페이지 즐겨찾기