peer pressure 2020-12-18 23:32 采纳率: 0%
浏览 9

大神能不能看看咋这个代码为啥在recover()时越界了?二叉树复原代码

#include<bits/stdc++.h>
using namespace std;

#define MAXN 100

int pre[MAXN];
int in[MAXN];

struct node{
	int data;
	node* leftchild;
	node* rightchild;
};

 node* recover(int pre1,int pre2,int in1,int in2){
 	if(pre1>pre2){
 		return NULL;
	 }
 	node* s = new node;
 	s->data = pre[pre1];
	int i = in1;
	for(;i<=in2;i++){
		if(pre[0] == in[i]){
			break;
		}
	}
	int leftnum = i-in1;
 	s->leftchild =recover( pre1+1, pre1+leftnum, in1, i-1);
 	s->rightchild =recover( pre1+leftnum+1, pre2,i+1,in2 );
 	return s;
 }
 void postOrder(node* root){
 	if(root == NULL){
 		return;
	 }else{
	 	postOrder(root->leftchild);
	 	postOrder(root->rightchild);
	 	cout<<root->data<<" ";
	 }
 }
 int main(){
 	int n;
 	cin>>n;
	for(int i = 0;i<n;i++){
		cin>>pre[i];
	}
	for(int j = 0;j<n;j++){
		cin>>in[j];	
	}
	node* root = recover(0,n-1,0,n-1);
	postOrder(root);
	return 0;
 }
  • 写回答

1条回答 默认 最新

  • 无厘头编程 2020-12-19 09:19
    关注

    你可以 cout 那个 i  出来自己看,不用别人帮。

    评论

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统