题目:给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。
思路分析:对于给定的两棵二叉树,先判断是否出现两个当前所指结点一个为空另一个不空的情况,再判断是否都为空,用了当前结点的索引 i,j 是否为null,如果两个结点都不为空且数据相同,再递归判断(T1的左子树与T2的左子树 且 T1的右子树与T2的右子树)或(T1的左子树与T2的右子树 且 T1的右子树与T2的左子树是否同构)即可,需要注意的是我的IsEmpty函数并不是判断当前结点是否为空,而是判断当前结点是否没有后继结点。
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。
|
|
|---|
| 图1 |
| 现给定两棵树,请你判断它们是否是同构的。 |
输入格式:
输入给出2棵二叉树树的信息。对于每棵树
这篇博客介绍了如何判断两棵二叉树是否同构。同构意味着通过交换节点的左右孩子,一棵树可以转换成另一棵树。思路是递归比较节点数据及子树,检查是否存在相同数据但左右子树不同序的情况。给定输入输出格式和样例,博主提供了实现代码。

最低0.47元/天 解锁文章
1145

被折叠的 条评论
为什么被折叠?



