剑指offer 面试26题

Posted yanmk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 面试26题相关的知识,希望对你有一定的参考价值。

面试26题:

题目:树的子结构

题:输入两棵二叉树A和B,判断B是不是A的子结构。

解题思路:递归,注意空指针的情况。

解题代码:

# -*- 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):
        # write code here
        res=False
        if pRoot1 and pRoot2:
            if pRoot1.val==pRoot2.val:
                res=self.SubtreeCore(pRoot1,pRoot2)
            if not res:
                res=self.HasSubtree(pRoot1.left,pRoot2)
            if not res:
                res=self.HasSubtree(pRoot1.right,pRoot2)
        return res
    
    def SubtreeCore(self,pRoot1,pRoot2):
        if pRoot2==None:
            return True
        if pRoot1==None:
            return False
        if pRoot1.val!=pRoot2.val:
            return False
        return self.SubtreeCore(pRoot1.left,pRoot2.left) and self.SubtreeCore(pRoot1.right,pRoot2.right)

另外,如果树节点的val值是double的时候,需要自定义一个equal函数,当num1和num2相差小于1e-07时即可认为是相等的,详见剑指offer P151

以上是关于剑指offer 面试26题的主要内容,如果未能解决你的问题,请参考以下文章

《剑指offer》面试题26 复杂链表的复制 Java版

剑指Offer名企面试官精讲典型编程题pdf

剑指Offer名企面试官精讲典型编程题pdf

剑指Offer学习所有面试题汇总

剑指offer 面试17题

剑指offer 面试29题