小白专场:是否同一棵二叉搜索树.pptx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
判断同一棵二叉搜索树 本资源旨在解决判断同一棵二叉搜索树问题,即给定多个插入序列,判断它们是否能生成一样的二叉搜索树。 知识点: 1. 二叉搜索树(Binary Search Tree,BST):是一种特殊的二叉树,每个节点的值大于或等于左子树中的所有节点值,小于或等于右子树中的所有节点值。 2. 插入序列:是指将一系列数字插入到一个空的二叉搜索树中,生成一个二叉搜索树。 3. 判断同一棵二叉搜索树:是指给定多个插入序列,判断它们是否能生成一样的二叉搜索树。 4. 解决思路: 1. 分别建两棵搜索树的判别方法:分别根据两个序列生成两棵二叉搜索树,然后判断这两棵树是否一样。 2. 不建树的判别方法:不生成二叉搜索树,而是直接判断两个序列是否能生成一样的二叉搜索树。 3. 建一棵树,再判别其他序列是否与该树一致:生成一棵二叉搜索树,然后判断其他序列是否能生成一样的二叉搜索树。 5. 程序框架: ```c int main(){ int N, L, i; Tree T; scanf("%d", &N); while (N) { scanf("%d", &L); T = MakeTree(N); for (i=0; i<L; i++) { if (Judge(T, N)) printf("Yes\n"); else printf("No\n"); ResetT(T); } FreeTree(T); scanf("%d", &N); } return 0; } ``` 6. 主要函数: 1. 读数据建搜索树T:MakeTree函数用于读取输入数据,生成一棵二叉搜索树。 2. 判别一序列是否与T构成一样的搜索树:Judge函数用于判断一个序列是否能生成一样的二叉搜索树。 7. 如何建搜索树: ```c Tree MakeTree( int N ){ Tree T; int i, V; scanf("%d", &V); T = NewNode(V); for (i=1; i<N; i++) { scanf("%d", &V); T = Insert(T, V); } return T; } ``` 8. 如何判别: ```c int check ( Tree T, int V ){ if ( T->flag ) { if ( V<T->v ) return check(T->Left, V); else if ( V>T->v ) return check(T->Right, V); else return 0; }else { if ( V==T->v ) { T->flag = 1; return 1; }else return 0; } } ``` 9. 判别函数: ```c int Judge( Tree T, int N ){ int i, V, flag = 0; scanf("%d", &V); if ( V!=T->v ) return 0; else T->flag = 1; for (i=1; i<N; i++) { scanf("%d", &V); if (!check(T, V) ) return 0; } return 1; } ``` 本资源旨在解决判断同一棵二叉搜索树问题,通过分析问题的需求,设计了解决思路和主要函数,提供了详细的代码实现。
剩余13页未读,继续阅读
- 粉丝: 5w+
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助