利用先序和中序确定二叉树后序遍历

#include<iostream>
#include<string>
using namespace std;
struct node{
	char data;
	node *l,*r;
};

node *create(const char *i,const char *p,int len){
	node *x=new node;
	x->data=*p;
	int index=0;
	for(;index<len;index++){
		if(*(i+index)==*p)
		break;
	}
	x->l=create(i,p+1,index);
	x->r=create(i+index+1,p+index+1,len-index-1);
	cout<<x->data;
	return NULL;
}

int main(){
	string pr,in;
	while(cin>>in>>pr){
	const char *p=pr.c_str();
	const char *i=in.c_str();
	int len=pr.size();
	create(i,p,len);
	}	
	return 0;
} 

二叉树的遍历存在一定规律:

先序:根左右

中序:左根右

利用 先序遍历确定二叉树的根节点

递归完成二叉树的还原

.c_str()函数包含在<string>头文件中,

作用是将字符串转换为字符数组;

返回的数据类型为const char *

猜你喜欢

转载自blog.csdn.net/m0_43456754/article/details/87914842