题解 | #树的子结构#

树的子结构

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
全部评论

相关推荐

丿南烟丶:黑白模板吧,不要这样花哨的。 主要成就太空了,和获奖融在一起,写一两行就行了。 职业技能不要这样排,就传统的掌握精通什么什么然后举例补充的一些重要技术点。 自我介绍说实话也没啥用,可以删了。 把自己的两个项目方案细节补充上去,为什么这样设计,怎么设计,成果是什么按star法则来写 你要引导面试官来问你的技能和项目,你的获奖和自我介绍别人可能看都不看一眼或者不太在乎,重要的是展示你能干活的能力
点赞 评论 收藏
分享
吃饭从不配汤:身高体重可以删掉,四六级可以加粗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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