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
        
  • 相关阅读:
    软件工程实践2020_个人作业 —— 软件评测
    软件工程实践2020_结对第二次作业 —— 某次疫情统计可视化的实现
    最受欢迎的 Git 分支工作流
    结对编程作业
    软件案例分析作业
    个人项目
    个人博客作业1
    第一次作业-热身!
    面向对象第三单元
    电梯作业总结
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10154334.html
Copyright © 2011-2022 走看看