03-树1 树的同构 (25分)
来源:互联网 发布:显示器颜色调整软件 编辑:程序博客网 时间:2024/06/04 17:41
AC代码 (根据课件整理)
#include<iostream>using namespace std;#define Null -1struct node{ char V; int L,R;}T1[10],T2[10];// 静态链表int build(node T[]){ int n; char c1,c2; cin>>n; if(n==0) return Null; int visited[10]={0};// 用来寻找根节点 for(int i=0; i<n; i++) { cin>>T[i].V>>c1>>c2; if(c1=='-') T[i].L=Null; else{ T[i].L=c1-'0'; visited[T[i].L]=1;// 该节点i被指向了 } if(c2=='-') T[i].R=Null; else{ T[i].R=c2-'0'; visited[T[i].R]=1;// 该节点i被指向了 } } for(int i=0; i<n; i++) if(visited[i]==0)//未被指向的即根节点 return i;}bool isomorphism(int r1,int r2){ if(r1==Null&&r2==Null)// 两棵树都是空树 return true; if((r1==Null&&r2!=Null)||(r1!=Null&&r2==Null))// 一棵树空一棵树不空 return false; if(T1[r1].V!=T2[r2].V)// 树节点值value不相等 return false; if(T1[r1].L==Null&&T2[r2].L==Null)// 两者左子树皆空 转而判断右子树 return isomorphism(T1[r1].R,T2[r2].R); if(T1[r1].L!=Null&&T2[r2].L!=Null && T1[T1[r1].L].V==T2[T2[r2].L].V)// 两者左子树皆不空 并且左子树的值相等 return (isomorphism(T1[r1].L,T2[r2].L)&& isomorphism(T1[r1].R,T2[r2].R));// 转而二路递归判断两者的子树 else return (isomorphism(T1[r1].L,T2[r2].R)&& isomorphism(T1[r1].R,T2[r2].L));// 两者左子树有一个空 或 皆不空但值不相等 则交换左右子树再判断}int main(){ int R1,R2; R1=build(T1); R2=build(T2); if(isomorphism(R1,R2)) cout<<"Yes"<<endl; else cout<<"No"<<endl; return 0;}
2 0
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构 (25分)
- 03-树1 树的同构(25 分)
- PTA 03-树1 树的同构(25 分)
- 5-3 树的同构 (25分)
- 5-3 树的同构 (25分)
- C++学习笔记三
- 【bzoj3436】 小K的农场 差分约束系统
- 栈操作理解
- 快速排序
- 集体智慧编程----第二章 提供推荐(Making Recommendations)
- 03-树1 树的同构 (25分)
- 调整该数组中数字的顺序
- C++学习笔记四
- Android Api Demos登顶之路(八十一)Graphics-->Patterns
- iOS9.0网络问题,苹果将原http协议改成了https协议
- hihocoder#1039 : 字符消除
- c/c++:efficient c++,返回值优化,RVO
- C++学习笔记五
- 11.2rac中,snapshot controlfile位置一定要改到共享目录下