自己的代码:
# 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