103. 二叉树的锯齿形层序遍历
题目链接
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
res=[]
queue=[root]
cnt=0
while queue:
level_node=[]
level_value=[]
for node in queue:
if node:
level_value.append(node.val)
if node.left:
level_node.append(node.left)
if node.right:
level_node.append(node.right)
if cnt%2==1:
level_value=level_value[::-1]
res.append(level_value)
cnt+=1
queue=level_node
return res
92. 反转链表 II
题目链接
class Solution:
def reverseBetween(self, head: Optional[ListNode], left: int, right: int) -> Optional[ListNode]:
def reverse(head):
pre=None
cur=head
while cur:
temp=cur.next
cur.next=pre
pre=cur
cur=temp
dummy=ListNode(next=head)
pre=dummy
for i in range(left-1):
pre=pre.next
rightNode=pre
for i in range(right-left+1):
rightNode=rightNode.next
leftNode=pre.next
back=rightNode.next
pre.next=None
rightNode.next=