zoukankan      html  css  js  c++  java
  • PAT1020 一个case出现段错误,可是我找不到

    //PAT1020 二叉树 建树 层序遍历
    #include<stdio.h>
    #include<stdlib.h>
    #include <iostream>
    #include <queue>
    using namespace std;
    typedef int ElementType ;
    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
    	ElementType Data;
    	BinTree Left;
    	BinTree right;
    };
    
    Position BuildTree(ElementType InOrder[],ElementType PostOrder[],int n){
    	if(n==0)
    	return NULL;
    	 
    	struct TNode* root=(struct TNode*)malloc(sizeof(struct TNode));
    	root->Data=PostOrder[n-1];
    	
    	int n1;
    	for(int i=0;i<n;i++)
    	if(InOrder[i]==PostOrder[n-1])
    	n1=i;
    	
    	root->Left=BuildTree(InOrder,PostOrder,n1);
    	root->right=BuildTree(InOrder+n1+1,PostOrder+n1,n-n1-1);
    	
    	return root;
    }
    
    void LeverOrderTraversals(BinTree BT){//copy from mooc! 抄错了一次 line49  T->Left 不是BT->left 
    	int flag=0;
    	queue<struct TNode>q;
    	BinTree T;
    	if(!BT) return;
    	q.push(*BT);
    	while(!q.empty()){
    		T=&q.front();
    		q.pop();
    		if(!flag){
    			flag=1;
    			printf("%d",T->Data);
    		}
    		else
    		printf(" %d",T->Data);
    		if(T->Left) q.push(*T->Left);
    		if(T->right) q.push(*T->right);
    	}	
    };
    
    
    int main(){
    		int n;
    		ElementType PostOrder[300],InOrder[300];
    		scanf("%d",&n);
    		for(int i=0;i<n;i++)
    	    scanf("%d",&PostOrder[i]);
    	    for(int i=0;i<n;i++)
    	    scanf("%d",&InOrder[i]);
    	    
    	    Position root=BuildTree(InOrder,PostOrder,n);
    	    LeverOrderTraversals(root);
    	    
    	    return 0;
    }
    

      

  • 相关阅读:
    [转]给明年依然年轻的我们:欲望、外界、标签、天才、时间、人生目标、现实、后悔、和经历
    C#后台发送HTTP请求
    asp.net 用户控件
    P1414 又是毕业季II
    P2254 [NOI2005]瑰丽华尔兹
    P1081 开车旅行
    P1084 疫情控制
    P1852 [国家集训队]跳跳棋
    P1074 靶形数独
    平时二十三测
  • 原文地址:https://www.cnblogs.com/lsj2020/p/5839684.html
Copyright © 2011-2022 走看看