二叉树·判断相同二叉搜索树
来源:互联网 发布:二手备案域名 编辑:程序博客网 时间:2024/04/28 15:46
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
方法:
为每个序列建树,并利用每棵树的中序遍历判断相同
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct BSTree { int data; struct BSTree* left; struct BSTree* right;}*BST,BSTree;BST Insert_Tree(BST root, int key) { if (root == NULL) { root = (BST)malloc(sizeof(BSTree)); root -> data = key; root -> left = NULL; root -> right = NULL; return root; } else { if (root -> data > key) { root -> left = Insert_Tree(root -> left, key); } else if (root -> data < key) { root -> right = Insert_Tree(root -> right, key); } return root; }}int order1[20];int order2[20];int num = 0;int num1 = 0;void Pre_Tree_Fir(BST root) { if (root == NULL) { return; } Pre_Tree_Fir(root -> left); Pre_Tree_Fir(root -> right); order1[num++] = root -> data; return ;}void Pre_Tree_Sec(BST root) { if (root == NULL) { return; } Pre_Tree_Sec(root -> left); Pre_Tree_Sec(root -> right); order2[num1++] = root -> data; return ;}int main() { int n, l; int i, j, k; while(~scanf("%d",&n)){ if (n == 0) { break; } scanf("%d",&l); BST root = NULL, root1 = NULL; num = 0; num1 = 0; for (i = 0; i < n; i++) { int a; scanf("%d", &a); root = Insert_Tree(root, a); } Pre_Tree_Fir(root); while(l --) { root1 = NULL; num1 = 0; for (i = 0; i < n; i++) { int a; scanf("%d",&a); root1 = Insert_Tree(root1, a); } Pre_Tree_Sec(root1); int flag = 1; for (i = 0; i <= n; i++) { if (order1[i] != order2[i]) { flag = 0; break; } } if (flag) { printf("Yes\n"); } else { printf("No\n"); } } } return 0;}
阅读全文
0 0
- 二叉树·判断相同二叉搜索树
- 判断是否相同的二叉搜索树
- 二叉搜索树是否相同
- 九度题目36:二叉搜索树(判断是否是相同二叉搜索树)
- 判断两颗二叉树是否相同
- 判断两个二叉树是否结构相同
- 判断两个二叉树是否相同
- 判断两个二叉树是否相同
- 判断两颗二叉树是否相同
- Java判断两个二叉树是否相同
- 算法 - 判断两个二叉树是否相同
- 判断是否为相同二叉树
- 判断二叉树是否相同,对称
- [Swift]判断两个二叉树是否相同
- 100. Same Tree |判断二叉树相同
- 判断两棵二叉树是否相同
- 【二叉树】判断两棵树是否相同
- 判断两棵二叉树是不是相同
- android常用地图坐标转换
- NFC源码分析之初始化流程
- 动态规划---最大子段和,最大子矩阵和,最大m子段和
- elasticsearch别的机器无法访问9200端口
- java基础杂谈(三)之静态数据初始化
- 二叉树·判断相同二叉搜索树
- JAVA--HttpServlet
- mysql 如何恢复数据?
- 第三周 【项目1
- 在Spring Boot中使用Spring Security实现权限控制
- 编程工作,毁坏了你的编程爱好
- mysql下如何执行sql脚本
- 阿里云移动测试平台基础了解(上篇)
- 数据结构课程设计学生信息管理系统