给定一个二叉树的根节点 root
,返回 它的 中序
遍历 。
1 | # Definition for a binary tree node. |
给定一个二叉树的根节点 root
,返回 它的 中序
遍历 。
1 | # Definition for a binary tree node. |
给你链表的头结点 head
,请将其按 升序
排列并返回 排序后的链表 。
创建一个字典,将链表节点和节点值对应起来,然后对字典进行排序,最后根据排序后的字典创建新的链表,返回即可。
1 | # Definition for singly-linked list. |
给你一个长度为 n
的链表,每个节点包含一个额外增加的随机指针 random
,该指针可以指向链表中的任何节点或空节点。你的任务是 深拷贝
这个链表,并返回新链表的头指针。你的代码 只
接受原链表的头节点 head
作为传入参数。
这个题目的主要难点在于如何处理 random
指针,因为 random
指针可能指向任意节点,所以我们需要一个字典来存储原链表节点和新链表节点的对应关系。通过这个字典,我们可以很容易的找到 random
指针指向的节点。
1 | """ |
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
用哨兵节点dummy,然后每次交换两个节点,然后移动到下一组节点。
1 | # Definition for singly-linked list. |
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
找到链表的倒数第 n 个节点,然后删除该节点即可。
1 | # Definition for singly-linked list. |
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序
的方式存储的,并且每个节点只能存储 一位
数字。请你将两个数相加,并以相同形式返回一个表示和的链表。
模拟这个列表的过程,将两个链表的数字取出来,相加,然后再转换成链表即可。
1 | # Definition for singly-linked list. |
将两个升序链表合并为一个新的 升序
链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
直接写就行了。
1 | # Definition for singly-linked list. |
给定一个链表的头节点 head
,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
。不允许修改链表。
和环形链表 I 一样的思路。
1 | # Definition for singly-linked list. |
给你一个链表的头节点 head
,判断链表中是否有环。
用一个 set
存储已经遍历过的节点,如果遍历到的节点已经在 set
中,说明链表有环。如果没有环,遍历到 None
时退出循环返回 False
。
1 | # Definition for singly-linked list. |
给你一个单链表的头节点 head
,请你判断该链表是否为 回文链表。如果是,返回 true
;否则,返回 false
。
用一个 nums
数组存起来链表的值,然后双指针判断是否是回文链表。
1 | # Definition for singly-linked list. |