【leetcode】872.Leaf-Similar Trees 解题报告

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dpengwang/article/details/82960111

在这里插入图片描述
就是找到二叉树的所有叶子节点,很easy 的DFS
自己的写法

# 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
        """
        self.array = []
        self.DFS(root1)
        res1 = []+self.array

        self.array=[]
        self.DFS(root2)
        res2 = [] +self.array
        return res1 ==res2

    def DFS(self,root):
        if root.left == None and root.right == None:
            self.array.append(root.val)
        else:
            if root.left!=None:
                self.DFS(root.left)
            if root.right!=None:
                self.DFS(root.right)

大佬的写法

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.DFS(root1) == self.DFS(root2)
    def DFS(self,root):
        if root ==None: return []
        #叶子节点
        if root.left ==None and root.right==None:
            return [root.val]
        return self.DFS(root.left) + self.DFS(root.right)

遍历的时候,用来的存储遍历结果的数组可以不用放在最外层(我写的那样),可以让遍历函数自己返回(第二种方法),这样使得程序更具有鲁棒性。比如中序遍历可以写成如下简单的形式

    def DFS(self,root):
        if root ==None:return []
        return self.DFS(root.left) +[root.val] + self.DFS(root.right)

猜你喜欢

转载自blog.csdn.net/dpengwang/article/details/82960111
今日推荐