zoukankan      html  css  js  c++  java
  • LeetCode872. Leaf-Similar Trees

    自己的代码:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        
         def allNode(self,root):
            listNode=[]
            if Not root:
                return ListNode
            checkResult=checkNode(root)
            if checkResult is not None:
                listNode.append(checkResult)
            if not root.left:
                self.allNode(root.left) 
            if not root.left:
                self.allNode(root.right)
            
            
            
        def checkNode(self,root):
            if not root.left and not root.right :
                return root.val
            return None
        
        def leafSimilar(self, root1, root2):
            """
            :type root1: TreeNode
            :type root2: TreeNode
            :rtype: bool
            """
            node1=allNode(root1)
            node2=allNode(root2)
            if node1==node2:
                return True
            return False

    主要问题:思维有些混乱,在使用递归的时候,先把针对单个结点的返回想好,再使用递归。

    优秀代码:

    https://blog.csdn.net/fuxuemingzhu/article/details/81748617

    先序遍历:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def leafSimilar(self, root1, root2):
            """
            :type root1: TreeNode
            :type root2: TreeNode
            :rtype: bool
            """
            return self.getLeafs(root1) == self.getLeafs(root2)
        
        def getLeafs(self, root):
            res = []
            if not root:
                return res
            if not root.left and not root.right:
                return [root.val]
            res.extend(self.getLeafs(root.left))
            res.extend(self.getLeafs(root.right))
            return res

    修改之后的代码:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        
         def leafSimilar(self, root1, root2):
            node1=self.allNode(root1)
            node2=self.allNode(root2)
            if node1==node2:
                return True
            return False
        
         def allNode(self,root):
            listNode=[]
            if not root:
                return ListNode
            if not root.left and not root.right :
                return [root.val]
            listNode.extend(self.allNode(root.left))
            listNode.extend(self.allNode(root.right))
            return listNode
        
  • 相关阅读:
    关于JQ中的extend及扩展
    获取javabean 属性,类型,值
    Go调度器系列(3)图解调度原理
    grpcgateway使用教程
    MySQL 自增主键为啥不是连续递增
    Go调度器系列(2)宏观看调度器
    golang中defer,panic,recover的用法
    vue项目通过nginx部署在子目录
    Go调度器系列(1)起源
    Golang GPM 模型剖析
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10154334.html
Copyright © 2011-2022 走看看