Day10

作者: wendy_要努力努力再努力 | 来源:发表于2017-11-08 10:56 被阅读0次
  1. Same Tree
    **思路:第一想到的是递归,DFS, 但是实在是不熟练,还是看答案做的题;但是答案看到人家的多个思路时,实在不能理解其中的用堆栈存储二叉树的思想。
    先存右结点,再存左结点,这样可以先弹出左边的根结点,如果他还有子节点,继续存,遇到不同的结点就可以跳出返回了。
    队列,先进先出,存到队尾,先出来的数据是队首的。
    堆栈,先进后出,存到栈顶,先出来的数据是栈顶的。
    pop()函数,append()函数,insert()函数,push()函数
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def isSameTree(self, p, q):
        """
        :type p: TreeNode
        :type q: TreeNode
        :rtype: bool
        """
        if p and q:
            return p.val == q.val and self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)
        
        return p == q
        stack = [(p, q)]
        while stack:
            p, q = stack.pop()
            if p == None and q == None:
                continue
            if p == None or q == None:
                return False
            if p.val == q.val:
                stack.append((p.right, q.right))
                stack.append((p.left, q.left))
            else:
                return False
        return True

  1. Symmetric Tree
    **思路:左边的左边和右边的右边;左边的右边和右边的左边,要相等;并且根节点的值要相等。此外,函数的定义问题,虽然是调用函数,但两者是并列关系,不要写错缩进关系了。
    bool类型:True、False、None
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    # @param root, a tree node  
    # @return a boolean 
    def isSym(self,left,right):
            if left == None and right == None:
                return True
            if left and right and left.val == right.val :
                return self.isSym(left.left,right.right) and self.isSym(left.right,right.left) 
            else:
                return False
            
        
    def isSymmetric(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        if root == None:
            return True
        else : 
            return self.isSym(root.left,root.right)

相关文章

网友评论

      本文标题:Day10

      本文链接:https://www.haomeiwen.com/subject/vbremxtx.html