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
    
原文地址:https://www.cnblogs.com/captain-dl/p/10154334.html