zoukankan      html  css  js  c++  java
  • 已知先序中序求后序算法

    // tree.cpp : Defines the entry point for the console application.
    //
    
    #include <stdio.h>
    #include "string.h"
    
    typedef struct node
    {
    	char data;
    	struct node *lchild,*rchild;
    } BinNode;
    typedef BinNode *BinTree;
    BinNode *CreateNode(char c)
    {
    	BinNode *n1=new BinNode();
    	n1->data=c;
    	n1->lchild=NULL;
    	n1->rchild=NULL;
    	return n1;
    }
    int searchchar(char c,char *order)
    {
    	for(int i=0; i<strlen(order); i++)
    	{
    		if(c==order[i])
    			return i;
    	}
    	return -1;
    }
    
    BinNode *CreateTree(char *pre,char *in)
    {
    	char c=pre[0];
    	char temppre[100];
    	char tempin[100];
    	char *p;
    	int i=0;
    	BinNode *bnode;
    	if(pre=='')
    		return NULL;
    	memset(temppre,0,100);
    	memset(tempin,0,100);
    	bnode=CreateNode(c);
    	i=searchchar(pre[0],in);
    	if(i==-1)
    		return 0;
    	p=in;
    	strncpy(tempin,p,i);
    	p=pre;
    	strncpy(temppre,p+1,i);
    	bnode->lchild=CreateTree(temppre,tempin);//left
        memset(tempin,0,100);
    	memset(temppre,0,100);
    	p=in+i+1;
    	strncpy(tempin,p,strlen(in)-i);
    	p=pre+i+1;
    	strncpy(temppre,p,strlen(in)-i);
    	bnode->rchild=CreateTree(temppre,tempin); //right
    return bnode;
    }
    
    void POSTORDER(BinNode *t)
    {
    	if(t) 
    	{
    		POSTORDER(t->lchild); 
    		POSTORDER(t->rchild); 
    		printf("	%c",t->data);
    	}
    }
    
    int main(int argc, char *argv[])
    {
    	char preorder[100];
    	char inorder[100];
    	BinNode *Head;
    	do
    	{
    		printf("preorder sequence:
    ");
    		scanf("%s",preorder);
    		printf("inorder sequence:
    ");
    		scanf("%s",inorder);
    	}
    	while(strlen(preorder)!=strlen(inorder));
    	Head=CreateTree(preorder,inorder);
    	printf("post sequence:");
    	POSTORDER(Head);
    	printf("
    ");
    	//	printf("%ld",strlen(readin));
    return 0;
    }
    
    
  • 相关阅读:
    css实现右侧三角
    css 应用 给头像添加标签
    css中伪选择器使用
    服务器上的项目不能对外发送请求
    视频只能播放一两帧,PDF文件60k以上加载失败的问题,静态访问也一样
    spring集成mybatis 打印sql语句
    新浪股票代码
    linux 设置mysql密码
    linux启动mysql服务报错
    配置eclipseJVM虚拟机内存大小
  • 原文地址:https://www.cnblogs.com/Skyxj/p/3478952.html
Copyright © 2011-2022 走看看