1.第一题:
通过依次在表头添加的方式反转链表,代码如下:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
new=None
while head:
p=head
a=head.next
p.next=new
new=p
head=a
return new
递归方法:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if head==None or head.next==None:
return head
tail=self.reverseList(head.next)
head.next.next=head
head.next=None
return tail
2.第二题:
这道题用递归比较简单,代码如下:
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if root==None:
return None
if root:
if root.right:
a=root.right
else:a=None
if root.left:
b=root.left
else:b=None
root.left=a
root.right=b
if root.right:
self.invertTree(root.right)
if root.left:
self.invertTree(root.left)
return root
3.第三题:
这道题就很离谱,一开始我还真没弄懂到底是什么意思,代码如下:
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val=node.next.val
node.next=node.next.next
4.第四题:
害,每天都只能欺负一下简单题!:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if sorted(s)==sorted(t):
return True
else:
return False
5.第五题:
哇,这道题还要输出箭头,这个真的好恶心哦!用的递归,代码如下:
class Solution:
def binaryTreePaths(self, root: TreeNode) -> List[str]:
reso=[]
s=""
def res(node,s):
if node:
s+=str(node.val)+"->"
if node.left:
res(node.left,s)
if node.right:
res(node.right,s)
if node.left==None and node.right==None:
reso.append(s)
res(root,s)
rf=[]
for i in reso:
rf.append(i[0:-2])
return rf