【leetcode】872.Leaf-Similar Trees 解題報告
阿新 • • 發佈:2018-12-14
就是找到二叉樹的所有葉子節點,很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)