自己的代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = Noneclass Solution:def allNode(self,root):listNode=[]if Not root:return ListNodecheckResult=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.valreturn Nonedef leafSimilar(self, root1, root2):""":type root1: TreeNode:type root2: TreeNode:rtype: bool"""node1=allNode(root1)node2=allNode(root2)if node1==node2:return Truereturn 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 = Noneclass 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 resif 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 = Noneclass Solution:def leafSimilar(self, root1, root2):node1=self.allNode(root1)node2=self.allNode(root2)if node1==node2:return Truereturn Falsedef allNode(self,root):listNode=[]if not root:return ListNodeif not root.left and not root.right :return [root.val]listNode.extend(self.allNode(root.left))listNode.extend(self.allNode(root.right))return listNode