04-树4 是否同一棵二叉搜索树(25 point(s))
来源:互联网 发布:网络音乐盛典歌曲 编辑:程序博客网 时间:2024/06/07 00:55
题目位置
分析:本来思考是否可以 通过不构成树,只通过 插入时 顺序,知道是否为,一颗查找树。 后来发现,这是不可以的,因为插入数据的不同,插入时的路径也不同,所以 没有相似之处。所以 选择 最笨的方法 实现这道题。
解决方法:构造查找树,实现插入方法。
【(通过层序遍历得顺序 知道是否为同一个查找树)赫然发现- - 这是不行的,除非对每一个地方进行判断。进行一次判断是不行的。】
故决定 进行中序遍历 和先序遍历,来唯一确定一棵树。
#include <stdio.h>#include <stdlib.h>typedef struct BinTree *Tree;struct BinTree{ char data; Tree left; Tree right;};void resultSeq(int N,char *preSeq,char *postSeq);Tree insert(Tree T,char data);void preorder(Tree T,int *i,char *preSeq1);int main(){ int N,L; int i,j; scanf("%d",&N); int result[3000]; int index=0; while(N){ scanf("%d",&L); char preSeq1[N+2]; char postSeq1[N+2]; char preSeq2[N+2]; char postSeq2[N+2]; resultSeq(N,preSeq1,postSeq1); for(i=0;i<L;i++) { resultSeq(N,preSeq2,postSeq2); if(strcmp(preSeq1,preSeq2)==0&&strcmp(postSeq1,postSeq2)==0) result[index] =1,index++; else result[index] = 0,index++; } scanf("%d",&N); } for(i=0;i<index;i++) { if(i!=0)printf("\n"); if(result[i]==1)printf("Yes"); else printf("No"); }}void resultSeq(int N,char *preSeq,char *postSeq){ Tree T1=NULL; int i=0,q=0; int j=0; char data[2]; for(j=0;j<N;j++){ scanf("%s",&data),T1 = insert(T1,data[0]); } i=0; preorder(T1,&i,preSeq); preSeq[i+1]='\0'; q=0; postorder(T1,&q,postSeq); postSeq[q]='\0';}void preorder(Tree T,int *i,char *preSeq1){ if(T) { preSeq1[*i] = T->data; (*i)++; preorder(T->left,i,preSeq1); (*i)++; preorder(T->right,i,preSeq1); } else {(*i)--;return;}}void postorder(Tree T,int *i,char *preSeq1){ if(T) { postorder(T->left,i,preSeq1); postorder(T->right,i,preSeq1); preSeq1[*i] = T->data; (*i)++; free(T); } else {return;}}Tree insert(Tree T,char data){ if(!T){ T = (Tree)malloc(sizeof(struct BinTree)); T->data =data; T->left=NULL; T->right=NULL; return T; } else{ if(T->data<data) T->right = insert(T->right,data); else if(T->data>data) T->left = insert(T->left,data); } return T;}
阅读全文
0 0
- 04-树4 是否同一棵二叉搜索树(25 point(s))
- 7-7 是否同一棵二叉搜索树(25 point(s))
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否是同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 04-树4 是否同一棵二叉搜索树
- 5-4 是否同一棵二叉搜索树 (25分)
- 底层string
- 洛谷P1440 求m区间内的最小值
- 吴恩达deeplearning.ai课程系列笔记01
- CodeForces 883I
- c++的函数
- 04-树4 是否同一棵二叉搜索树(25 point(s))
- 目前最全的机器学习知识结构图(11月1日更新)
- 编程之美--第二章问题解答
- JavaScript中apply bind call的异同(重点讲解call方法)
- Linux下创建目录、用户,并限制对应用户权限
- 浅谈ArrayList动态扩容
- C++ 使用std::function 和std::bin实现委托
- 系统虚拟机管理
- zabbix_sender提交item数据