gplt L2 - 011. 이 진 트 리 돌리 기 (이 진 트 리 옮 겨 다 니 기)
                                            
 1922 단어  기타 oj데이터 구조 - 각종 트 리
                    
제목: 당신 에 게 중 서 앞 서 를 주 고 층 서 를 구 합 니 다.
사고: 중간 순서 에 따라 나 무 를 만 들 고 hdu 1710 과 같 습 니 다.이어서 층 차 를 옮 겨 다 니 면 bfs 입 니 다.미 러 가 되 지 않 고 옮 겨 다 니 며 오른쪽 노드 를 먼저 대기 열 에 올 리 면 됩 니 다.
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int N = 35;
int cnt, n;
typedef struct Tree
{
    Tree *left;
    Tree *right;
    int val;
}Tree;
Tree *root;
Tree* creat(int *preorder, int *inorder, int n)//  、       
{
    Tree *tmp;
    for(int i = 0; i < n; i++)
    {
        if(preorder[0]==inorder[i])//           
        {
            tmp = (Tree*)malloc(sizeof(Tree));
            tmp->val = inorder[i];
            tmp->left = creat(preorder+1, inorder, i);
            tmp->right = creat(preorder+i+1, inorder+i+1, n-(i+1));
            return tmp;
        }
    }
    return NULL;
}
void levelorder(Tree *cur)
{
    cnt = 0;
    queueque;
    while(!que.empty()) que.pop();
    que.push(cur);
    Tree *node;
    while(!que.empty())
    {
        node = que.front();
        que.pop();
        if(cnt == n-1) printf("%d
", node->val);
        else
        {
            printf("%d ", node->val);
            cnt++;
        }
        if(node->right != NULL) que.push(node->right);
        if(node->left != NULL) que.push(node->left);
    }
}
int main()
{
  //  freopen("in.txt", "r", stdin);
    int preorder[N], inorder[N];
    while(~scanf("%d", &n))
    {
        for(int i = 0; i < n; i++)
            scanf("%d", &inorder[i]);
        for(int i = 0; i < n; i++)
            scanf("%d", &preorder[i]);
        root = creat(preorder, inorder, n);
        levelorder(root);
    }
}
      이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[네트워크 흐름 24 문제] 마술 공 문제.n 개의 기둥 이 있다 고 가정 하면 다음 과 같은 규칙 에 따라 이 n 개의 기둥 에 번호 가 1, 2, 3 인 공 을 순서대로 넣 어야 한다. (1) 매번 어떤 기둥 의 맨 위 에 만 공 을 놓 을 수 있다. (...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.