1. 程式人生 > >【leetcode】872.Leaf-Similar Trees 解題報告

【leetcode】872.Leaf-Similar Trees 解題報告

在這裡插入圖片描述 就是找到二叉樹的所有葉子節點,很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)