树的子结构

2020-08-18  本文已影响0人  棉花糖7

这道题之前做过,只是自己又想不起来了。方法就是两次递归+dfs

首先:需要一个函数来判断树B 是不是 树A的子结构。

1.递归函数功能:判断2个树是否具有相同的功能,有就返回true,否则返回false。

2.递归终止条件:如果树B为空,则表示已经递归到最后了,2棵树都是相等的,所以直接返回true。

                            如果树A为空,则树B不为空,直接返回false。

3.下一步递归参数:如果A的根节点和B的根节点不相等,则直接返回false

                         如果相等,则继续判断树A的左子树和树B的左子树 以及树A的右子树和树B的右子树是否相等。只有都相等,才能说明树A和树B结构相同。

其次:接下来我们应该以树A的每个节点作为跟节点,分别与树B进行比较,来确定 树B 是否是 树A 的子树。。

这里要注意的一点是, 如果树A为不管树B是否为空,都是false。另外一个题目已经说明 空树不是任意一个树的子结构。因此如果树B为空树,返回false。

在遍历树A的每个节点时,可以选择先序遍历。

题目 题解 代码
上一篇下一篇

猜你喜欢

热点阅读