首页 > 其他 > 详细

leetcode1367

时间:2020-03-01 14:17:03      阅读:55      评论:0      收藏:0      [点我收藏+]
 1 class Solution:
 2     def __init__(self):
 3         self.l = []
 4 
 5     def preOrder(self,node,temp):
 6         if node != None:
 7             temp.append(str(node.val))
 8             if node.left != None:
 9                 self.preOrder(node.left,temp)
10             if node.right != None:
11                 self.preOrder(node.right,temp)
12             if node.left == None and node.right == None:
13                 s = |.join(temp)
14                 self.l.append(s)
15             temp.pop(-1)
16 
17 
18     def isSubPath(self, head: ListNode, root: TreeNode) -> bool:
19         self.preOrder(root,[])
20         #print(self.l)
21         comp = []
22         while head != None:
23             comp.append(str(head.val))
24             head = head.next
25         target = |.join(comp)
26         for l in self.l:
27             if l.find(target) >= 0:
28                 return True
29         return False

算法思路:二叉树(先序)遍历,链表顺序遍历。

二叉树遍历,存储每一个路径的节点集合,将这个集合生成用‘|‘分割的字符串。

按顺序遍历链表,也生成字符串。

循环二叉树的路径集合,判断每一个路径字符串,是否包含head生成的子字符串。

leetcode1367

原文:https://www.cnblogs.com/asenyang/p/12389535.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!