📅  最后修改于: 2023-12-03 14:49:58.077000             🧑  作者: Mango
通过递归的方式从中间顺序(in-order)遍历单向链接列表,并依次输出每个节点的值,从而实现从左到右顺序(left-to-right)遍历的效果。
traverse(curr, count)
,该函数接受两个参数:curr
: 当前节点count
: 当前节点到列表尾节点的距离traverse
函数中:count
等于 1,输出当前节点的值count
大于 1,先递归遍历当前节点的下一个节点,参数为 count - 1
,然后输出当前节点的值traverse
函数,将当前节点设为头节点(head),距离设为列表长度(length),即 traverse(head, length)
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def traverse(curr: ListNode, count: int):
if count == 1:
print(curr.val)
return
traverse(curr.next, count - 1)
print(curr.val)
def inorder_to_ltor(head: ListNode):
length = 0
curr = head
while curr:
length += 1
curr = curr.next
traverse(head, length)
# Example usage:
# head = ListNode(1, ListNode(2, ListNode(3, ListNode(4))))
# inorder_to_ltor(head) # Output: 2 1 3 4
上述代码实现了 inorder_to_ltor
函数,该函数先计算出列表的长度 length
,然后调用 traverse
函数,参数为 head, length
。 在 traverse
函数的实现中,首先判断 count
是否为 1,如果是,输出当前节点的值。否则,先递归访问当前节点的下一个节点,参数设为 count - 1
,然后输出当前节点的值。调用 traverse(head, length)
即可实现从中间顺序到左右顺序遍历。