SDUT 3340 数据结构实验之二叉树一:树的同构
2016-08-01 11:28
405 查看
点击打开题目链接
点击打开视屏链接:第三讲树,小白专场
点击打开视屏链接:第三讲树,小白专场
#include <bits/stdc++.h> #define Null -1 using namespace std; struct Tree { char data; int left; int right; } T1[15], T2[15]; int judge(int r1, int r2); int CreatTree(Tree T[], int n); int main() { int n; int r1, r2; while(cin >> n) { r1 = CreatTree(T1, n); cin >> n; r2 = CreatTree(T2, n); if(judge(r1, r2)) cout << "Yes" << endl; else cout << "No" << endl; } return 0; } int CreatTree(Tree T[], int n) { int root = -1; char r[10], l[10], data[10]; int check[15]; memset(check, 0, sizeof(check)); if(n) { for(int i = 0; i < n; i++) { scanf("%s %s %s", data, l, r); T[i].data = data[0]; if(l[0] != '-') { T[i].left = l[0]-'0'; check[T[i].left] = 1; } else T[i].left = Null; if(r[0] != '-') { T[i].right = r[0]-'0'; check[T[i].right] = 1; } else T[i].right = Null; } for(int i = 0; i < n; i++) { if(!check[i]) { root = i; break; } } } return root; } int judge(int r1, int r2) { if(r1 == Null && r2 == Null) return 1; if((r1 == Null && r2 != Null) || (r1 != Null && r2 == Null)) return 0; if(T1[r1].data != T2[r2].data) return 0; if((T1[r1].left == Null) && (T2[r2].left == Null)) return judge(T1[r1].right,T2[r2].right); if((T1[r1].left != Null && T2[r2].left != Null) && (T1[T1[r1].left].data == T2[T2[r2].left].data)) return (judge(T1[r1].left, T2[r2].left) && judge(T1[r1].right, T2[r2].right)); else return (judge(T1[r1].left, T2[r2].right) && judge(T1[r1].right, T2[r2].left)); }
相关文章推荐
- pta 03-树1 树的同构 SDUT 3340 数据结构实验之二叉树一:树的同构
- SDUT 数据结构实验之二叉树一:树的同构
- SDUT-数据结构实验之二叉树一:树的同构
- 3340 数据结构实验之二叉树一:树的同构
- SDUT 数据结构实验之二叉树一:树的同构
- 3340-->数据结构实验之二叉树一:树的同构
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
- 数据结构实验之二叉树一:树的同构
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树一:树的同构
- 数据结构实验之二叉树一:树的同构
- 数据结构实验之二叉树一:树的同构
- sdutacm-数据结构实验之二叉树一:树的同构
- 数据结构实验之二叉树一:树的同构
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树一:树的同构
- 数据结构实验之二叉树一:树的同构
- 暑假集训 8.8 sdut2136 数据结构实验之二叉树的建立与遍历
- SDUT-数据结构实验之二叉树二:遍历二叉树