九度1009判断两个序列构成的两个二叉排序树是否相同
来源:互联网 发布:linux安装anaconda 编辑:程序博客网 时间:2024/05/17 08:35
此程序中,实现用递归构造二叉排序树,以前递归一直构造不成功,仔细看看书,发现是函数传送参数的时候,不能传送指向结点的指针,若这样只能改变此指针指向内容,而无法改变此指针,但是递归构造时,当函数接受的参数为NULL时,要分配空间,把这个新空间的指针值赋给传过来的指针,所以传送参数时要传指针的指针,这样就不仅可以改变指针指向的能容,也能改变这个指针,这样就顺利生成新的结点。
本题思路:分别根据序列构造排序树,对比这两棵树的前序序列和中序序列,若都相同则这两颗二叉树相同
#include<stdio.h>#include<string.h>typedef struct NODE{ char data; struct NODE *lc,*rc;}node;typedef node * nodeptr;int pos;void insertNode(nodeptr *treeptr,char value){ if((*treeptr)==NULL) { (*treeptr)=malloc(sizeof(node)); (*treeptr)->data=value; (*treeptr)->lc=NULL; (*treeptr)->rc=NULL; }else if(value<(*treeptr)->data) insertNode(&((*treeptr)->lc),value); else if(value>(*treeptr)->data) insertNode(&((*treeptr)->rc),value);} void createBT(node **root,int num,char x[]){ int i; for(i=0;i<num;i++) insertNode(root,x[i]);}void preOrder(node *T,char x[]){ if(T!=NULL) { x[pos++]=T->data; preOrder(T->lc,x); preOrder(T->rc,x); }} void inOrder(node *T,char x[]){ if(T!=NULL) { inOrder(T->lc,x); x[pos++]=T->data; inOrder(T->rc,x); }} int main(){ int n,i,j,len; node *BT,*BX; char s[10],temp[10],pre[10],in[10]; scanf("%d",&n); while(n) { BT=NULL; scanf("%s",s); len=strlen(s); createBT(&BT,len,s); pos=0; preOrder(BT,pre); pos=0; inOrder(BT,in); for(i=0;i<n;i++) { BX=NULL; scanf("%s",s); len=strlen(s); createBT(&BX,len,s); pos=0; preOrder(BX,temp); for(j=0;j<len;j++) if(pre[j]!=temp[j]) break; if(j<len) printf("NO\n"); else { pos=0; inOrder(BX,temp); for(j=0;j<len;j++) if(in[j]!=temp[j]) break; if(j<len) printf("NO\n"); else printf("YES\n"); } } scanf("%d",&n); } return 0;}
- 九度1009判断两个序列构成的两个二叉排序树是否相同
- 1009 比较两个二叉排序树是否相同
- 1.4 写一个函数判断两个字符串是否使用相同的字符构成。
- 判断两个日期是否相同
- 判断两个图片是否相同
- 判断两个View是否相同
- 判断两个字符串是否相同
- 判断二叉排序树是否相同
- sql 判断两个字符串是否存在相同的内容
- 判断两个数组中是否存在相同的数字
- 判断两个字符串是否有相同的字符
- 判断两个有序数组中是否存在相同的数字
- 判断两个数组中是否有相同的数字
- VB.Net判断两个对象是否相同的方法
- PHP判断两个网址是否指向相同的网页
- 判断两个有序数组中是否有相同的数字
- Arrays_Strings 判断两个字符串是否有相同的字符 @CareerCup
- ReferenceEquals()判断两个字符串是否指向相同的内存地址
- Java 多线程与并发编程专题
- android AbsListView listselector
- 华为公司2014届校园招聘软件类上机考试样题
- 《Linux设备节点创建》内核kobject上报uevent过滤规则
- DirectX的模型在左右手转换时应该如何调整
- 九度1009判断两个序列构成的两个二叉排序树是否相同
- 英文地址书写方式
- webservice 实现之java6
- oracle 并行原理
- 直接拿来用!最火的iOS开源项目(一)
- Lambda functions (since C++11)
- 视频跟踪算法
- KMP算法代码
- js获取某个html文件