剑指Offer--17.树的子结构
来源:互联网 发布:飞鹰网络电视直播软件 编辑:程序博客网 时间:2024/05/20 14:19
题目描述:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
python代码:
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def HasSubtree(self, pRoot1, pRoot2): # write code here if pRoot2 == None or pRoot1 == None: return False return isSubtree(pRoot1,pRoot2) or isSubtree(pRoot1.left,pRoot2) or isSubtree(pRoot1.right,pRoot2)def isSubtree(pRoot1,pRoot2): if pRoot2 == None: return True if pRoot1 == None: return False if pRoot1.val != pRoot2.val: return isSubtree(pRoot1.left,pRoot2) or isSubtree(pRoot1.right,pRoot2) else: return isSubtree(pRoot1.left,pRoot2.left) and isSubtree(pRoot1.right,pRoot2.right)
解析:
HasSubtree函数返回pRoot2是否是pRoot1、pRoot1.left、pRoot1.right其中之一的子树。
isSubtree递归调用,如果pRoot2走到了空节点,证明pRoot2当前分支是pRoot1的子结构,否则如果pRoot1走到了空节点,证明pRoot2的当前分支不是pRoot1的子结构。
如果pRoot1和pRoot2当前节点的值不相同,则看看pRoot2是不是pRoot1左或者右子树的子结构。
否则pRoot1和pRoot2的当前节点的值相同,则继续判断左右子树是否都是pRoot2属于pRoot1的子结构。
阅读全文
0 0
- 剑指offer-17.树的子结构
- 剑指Offer--17.树的子结构
- [剑指Offer] 17.树的子结构
- 剑指offer:判断树的子结构
- 【剑指offer】树的子结构
- 【剑指offer】Q18:树的子结构
- 剑指offer--17树的子结构
- 剑指offer--树的子结构
- 剑指Offer之 - 树的子结构
- 剑指offer 18 - 树的子结构
- 剑指Offer-树的子结构
- 剑指offer之树的子结构
- 《剑指offer》树的子结构
- 剑指offer—树的子结构
- 剑指Offer-18-树的子结构
- 剑指offer:树的子结构
- 【剑指offer】之树的子结构
- 剑指offer 17 树的子结构
- MATLAB匿名函数
- zxing实现二维码生成
- 了解汇编语言之寄存器
- CSS 各种选择器
- 内容提供者ContentProvider和内容解析者ContentResolver
- 剑指Offer--17.树的子结构
- 大数据预科班13
- 状态机
- Jq实现广告弹出与隐藏(Jq概述,Jq选择器)
- JS实现多选删除(DOM)
- mysql中模糊查询的四种用法介绍
- storm——本地eclipse上调试wordcount程序
- Android-图片加载优化
- 触摸屏驱动程序设计 之 触摸屏驱动分析