题解 | #树的子结构#

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

中序遍历,匹配也使用中序遍历。

中序遍历非递归模板

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        stack = [] 
        p = pRoot1
        if pRoot2 == None:
            return False
        while (stack != None and len(stack) > 0 ) or p != None:
            while p != None:
                stack.append(p)
                p = p.left
            p = stack.pop(-1)
            if p.val == pRoot2.val:
                if self.Ischild(p, pRoot2):
                    return True
            p = p.right
        return False
    def Ischild(self,proot1,proot2):
        stack = []
        stack2 = []
        p = proot1
        p2 = proot2
        while ((stack != None and len(stack) > 0 ) and (stack2 != None and len(stack2) > 0) ) or (p != None and p2 != None):
            while p != None and p2 != None:
                stack.append(p)
                stack2.append(p2)
                p = p.left
                p2 = p2.left
            if p2 != None:
                return False
            p = stack.pop(-1)
            p2 = stack2.pop(-1)
            if p.val != p2.val:
                return False
            p = p.right
            p2 = p2.right
        if stack2 != None and len(stack2) >0:
            return False
        return True
全部评论

相关推荐

2025-12-27 22:36
门头沟学院 Java
点赞 评论 收藏
分享
2025-11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务