题解 | #树的子结构#

树的子结构

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

相关推荐

昨天 11:23
重庆邮电大学 C++
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-26 20:06
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务