검지offer-지그재그 순서로 두 갈래 나무 인쇄

1230 단어 검지offer
제목:
함수를 실현하여 지그재그 순서에 따라 두 갈래 나무를 인쇄합니다.
지그재그 순서로 두 갈래 나무를 인쇄하려면 두 개의 창고가 필요하다.우리가 어떤 줄의 결점을 인쇄할 때, 다음 층의 자결점은 상응하는 창고에 저장합시다.현재 인쇄된 것이 홀수층(첫째, 셋째)이면 왼쪽 결점을 저장하고 오른쪽 결점의 첫 번째 창고에 저장합니다.현재 짝수층 (둘, 넷) 을 치면 오른쪽 결점을 저장한 다음 왼쪽 결점을 두 번째 창고에 저장합니다.
struct BinaryTree
{
    int data;
    BinaryTree *left;
    BinaryTree *right;
};

void print(BinaryTree *pRoot)
{
    if(pRoot==NULL)
        return;
    stack level[2];
    
    int cur=0;
    int next=1;
    
    level[cur].push(pRoot);
    while(!level[0].empty()||!level[1].empty())
    {
        BinaryTree *pNode=level[cur].top();
        level[cur].pop();
        cout<data;
        if(cur==0)
        {
            if(pNode->left!=NULL)   
                level[next].push(pNode->left);
            if(pNode->right!=NULL)
                level[next].push(pNode->right);
        }
        else
        {
            if(pNode->right!=NULL)
                level[next].push(pNode->right);
            if(pNode->left!=NULL)
                level[next].push(pNode->left);
        }
        if(level[cur].empty())
        {
            cout<

좋은 웹페이지 즐겨찾기