其它pta数据结构编程题请参见:pta

题目请参见:树的同构

因题目中左右子树是按照下标给出,因此用数组存放树是更好的方法。

判断两棵树是否同构:用递归的方法。如果当前两个结点都为空,则返回TRUE;如果一个结点空一个不空,或者两个结点都不为空但是结点存储的数据不同,则返回FALSE。然后递归地的调用函数,判断是否左子树和左子树相同且右子树和右子树相同,或者左子树和左子树相同且右子树和右子树相同。

 #include <iostream>
using namespace std; struct Node
{
char data;
int left;
int right;
}; int buildTree(Node tree[]);
bool isSame(Node tree1[], int root1, Node tree2[], int root2); int main()
{
Node tree1[], tree2[];
int root1, root2;
root1 = buildTree(tree1);
root2 = buildTree(tree2);
if (isSame(tree1, root1, tree2, root2)) cout << "Yes";
else cout << "No";
return ;
} int buildTree(Node tree[])
{
int num, i, root = -;
char d, l, r;
cin >> num;
int judgeRoot[] = {};
for (i = ; i < num; i++)
{
cin >> d >> l >> r;
tree[i].data = d;
if (l != '-')
{
tree[i].left = l - '';
judgeRoot[l - ''] = ;
}
else tree[i].left = -;
if (r != '-')
{
tree[i].right = r - '';
judgeRoot[r - ''] = ;
}
else tree[i].right = -;
}
for (i = ; i < num; i++)
{
if (judgeRoot[i] == ) root = i;
}
return root;
} bool isSame(Node tree1[], int r1, Node tree2[], int r2)
{
if (r1 == - && r2 == -) return true;
if (r1 == - && r2 > - || r1 > - && r2 == -) return false;
if (tree1[r1].data != tree2[r2].data) return false;
return isSame(tree1, tree1[r1].left, tree2, tree2[r2].left)
&& isSame(tree1, tree1[r1].right, tree2, tree2[r2].right)
|| isSame(tree1, tree1[r1].left, tree2, tree2[r2].right)
&& isSame(tree1, tree1[r1].right, tree2, tree2[r2].left);
}

pta 编程题6 树的同构的更多相关文章

  1. 【PTA】浙江大学数据结构慕课 课后编程作业 03-树1 树的同构

    题目内容 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右 ...

  2. pta 编程题14 Huffman Codes

    其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...

  3. pta 编程题13 File Transfer

    其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量 ...

  4. pta 编程题8 Tree Traversals Again

    其它pta数据结构编程题请参见:pta 这次的作业考察的是树的遍历. 题目的输入通过栈的pop给出了树的中序遍历的顺序.根据push和pop的顺序构造树的方法为:定义一个变量father来确定父节点, ...

  5. pta 编程题7 List Leaves

    其它pta数据结构编程题请参见:pta 这次的编程作业要求从上到下,从左到右输出一棵树的叶子节点,即树的层序遍历,用队列的方式来实现. 注意enqueue和dequeue函数参数为Queue & ...

  6. pta 编程题20 旅游规划

    其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...

  7. pta 编程题21 公路村村通

    其它pta数据结构编程题请参见:pta 题目 这道题考察最小生成树问题,用的是Prim算法. 和Dijkstra算法相比,没有了collect数组,因为dist[v] == 0就代表v被已收录. #i ...

  8. pta编程题19 Saving James Bond 2

    其它pta数据结构编程题请参见:pta 题目 和简单版本不同的是,简单版本只需判断能否到达岸边,而这个版本要求求出最少跳数的路径. 简单版本用dfs实现,而这道题用BFS实现. 注意: 岛半径为7.5 ...

  9. pta 编程题16 Saving James Bond - Easy Version

    其它pta数据结构编程题请参见:pta 题目 主要用到了深度优先搜索. #include <iostream> using namespace std; struct Vertex { i ...

随机推荐

  1. 死磕 java同步系列之开篇

    简介 同步系列,这是彤哥想了好久的名字,本来是准备写锁相关的内容,但是java中的CountDownLatch.Semaphore.CyclicBarrier这些类又不属于锁,它们和锁又有很多共同点, ...

  2. pod 安装

    cocoapods 简介: CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所 ...

  3. oracle odbc连接sqlserver 无法查询字段

    最近因项目需要,需要在oracle数据库里面通过DBLINK方式链接SQLserver数据库(oracle 11G,Sqlserver2016,具体实现参考链接 http://blog.sina.co ...

  4. PDO中构建事务处理的应用程序

    <meta http-equiv="Content-Type" content="text/html";charse="utf-8" ...

  5. Helvetic Coding Contest 2016 online mirror C1

    Description One particularly well-known fact about zombies is that they move and think terribly slow ...

  6. Linux--2 Linux之文档与目录结构、shell基本命令

    一.Linux之文档与目录结构 1.Linux之文档与目录结构 Linux目录结构的组织形式和Windows有很大的不同.Linux没有“盘(如C盘.D盘.E盘)”的概念,而是建立一个根"/ ...

  7. 练习四十六:列表排序,删除list中重复的元素

    方法一:使用集合set;将list直接转换为set a = [1,3,4,3,5,7] a = list(set(a)) print(a) 执行结果: [1, 3, 4, 5, 7] 方法二:直接排序 ...

  8. c#spinLock使用

        版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011915028/article/details/53011811 一下解释摘自msdn  ...

  9. 036 Valid Sudoku 有效的数独

    详见:https://leetcode.com/problems/valid-sudoku/description/ class Solution { public: bool isValidSudo ...

  10. Microsoft JET Database Engine (0x80004005)未指定的错误解决

    Microsoft JET Database Engine (0x80004005)未指定的错误,这个错误只有在使用Access数据库时才能出现 出现以上问题,可以使用以下步骤进行解决问题: 1.系统 ...