剑指Offer(十七):树的子结构

2017年12月8日15:07:12 8 6,593 °C
摘要

输入两颗二叉树A,B,判断B是不是A的子结构。(PS:我们约定空树不是任意一个树的子结构)。

剑指Offer(十七):树的子结构

一、前言

本系列文章为《剑指Offer》刷题笔记。

刷题平台:牛客网

书籍下载:共享资源

二、题目

输入两颗二叉A,B,判断B是不是A的子结构。(PS:我们约定空树不是任意一个树的子结构)。

1、思路

要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和B的根结点的值一样的结点R,第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。

这里使用递归的方法即可。

2、代码

C++:

Python2.7:

weinxin
微信公众号
分享技术,乐享生活:微信公众号搜索「JackCui-AI」关注一个在互联网摸爬滚打的潜行者。
Jack Cui

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:8   其中:访客  7   博主  1

    • avatar 大敏 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市宝安区 /南山区电信 3

      我理解错了,不好意思

        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器  Android 8.0.0 MIX 2 Build/OPR1.170623.027 辽宁省沈阳市 联通GSM/WCDMA/LTE共用出口

          @大敏 呃,我这突然一看也感觉错了,哈哈。

        • avatar 小小毛 来自天朝的朋友 谷歌浏览器 Windows 7 天津市 天津大学 3

          python2.7版
          这个代码和您前面提到的解题思路是一致的吗?感觉不像啊

            • avatar walker 来自天朝的朋友 谷歌浏览器 Windows 10 陕西省西安市 电信 1

              @小小毛 公有函数是找与子树根结点相同的结点,私有函数判断的是根结点相同的两棵树A是否包含B。和作者的分析是一致的。

                • avatar 小小毛 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 电信通 3

                  @walker 大意是:判断B是不是A的子结构。也就是B是A的一部分就行或者是B都包含在A中。也即是固定A,挨个检验B是否在A中就行啊

                • avatar 小小毛 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 电信通 3

                  @小小毛 判断B是不是A的子结构。也就是B是A的一部分就行或者是B都包含在A中。也即是固定A,挨个检验B是否在A中就行啊。

                    • avatar walker 来自天朝的朋友 谷歌浏览器 Windows 10 陕西省西安市 电信 0

                      @小小毛 嗯嗯,是的。整个函数就是实现这么一个功能的。我觉得设置的私有函数也就是为了结构化编程,代码更友好吧。

                  • avatar 小小毛 来自天朝的朋友 谷歌浏览器 Windows 7 天津市 天津大学 3

                    明白了,sorray。