文章

49

粉丝

140

获赞

27

访问

17.0k

头像
二叉树遍历2 题解:新手总结
P1401 华中科技大学/中国科学院2017机试题
发布于2024年2月27日 11:57
阅读数 398

#include <iostream>
#include<string.h>
using namespace std;
//typedef struct node {

	//int data;
	//struct node *lchild,*rchild;
//}node,*Tnode;

void postnode(char *pre,char *mid,int *p,int start,int end){
	char cc;
	int c;
	if(pre[*p]!='\n'&&start<=end)
	{
		cc=pre[*p];
		(*p)++;

	for(int i=start;i<=end;i++)
	{
		if(cc==mid[i]){//找到根节点在中序序列中的位置
			c=i;
			break;
		}
	}	

	postnode(pre,mid,p,start,c-1);  // 以c为界限把其划分为两半          
	postnode(pre,mid,p,c+1,end);
	cout<< cc;	
	//后序遍历就是最后遍历根节点
	}//if  只有满足这个条件才行
	//return;
}
int main(){
	char pre[30];
	char mid[30];
	for(int i=0;i<30;i++){
		pre[i]=0;
		mid[i]=0;
	}
	int len,p;
	while ( cin >> pre >>mid){
		p=0;
		len=strlen(pre);
		postnode(pre,mid,&p,0,len-1);
		cout <<endl;
		//清空
for(int i=0;i<30;i++){
		pre[i]=0;
		mid[i]=0;
	}
	}
	//system("pause");
	return 0;
}

有点类似于快速排序算法

1.得到先序和中序序列  2.找到根节点在中序中的位置 ,并以...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发