剑指offer题目及解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
剑指offer题目及解析
剑指Offer是《名企面试官精讲典型编程题》的曾用书名,是《Offer达人》团队的一个汇集常见面试题的开源电子书。
以下是部分题目及解析:
题目1:二叉树的镜像
题目描述:给定一个二叉树,构造它的镜像并返回。
解题思路:对于二叉树的镜像问题,我们可以使用递归的方式来解决。
对于当前节点,如果它存在右子树,那么镜像就是它的左子树,否则就是它的右子树。
具体来说,我们可以通过以下步骤来实现:
1. 如果当前节点为空,则返回空。
2. 如果当前节点存在右子树,则递归构造左子树,并将其作为当前节点的镜像。
3. 否则,递归构造右子树,并将其作为当前节点的镜像。
4. 返回当前节点的镜像。
以下是该题目的代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
= val
= left
= right
def mirrorTree(root: TreeNode) -> TreeNode:
if not root:
return None
if :
, = mirrorTree(), mirrorTree()
return root
```
题目2:反转链表
题目描述:给定一个链表,反转链表并返回新的链表。
解题思路:我们可以使用迭代的方式来反转链表。
具体来说,我们可以使用三个指针来迭代遍历链表,分别指向当前节点的前一个节点、当前节点和当
前节点的下一个节点。
在遍历过程中,我们不断更新这三个指针的位置,直到遍历到链表的末尾。
最后返回新的头节点即可。
以下是该题目的代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
= val
= next
def reverseList(head: ListNode) -> ListNode:
prev = None
curr = head
while curr:
next_node = 保存当前节点的下一个节点
= prev 将当前节点的下一个节点指向前一个节点
prev = curr 更新prev为当前节点
curr = next_node 更新curr为下一个节点
return prev 返回新的头节点
```。