剑指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 将当前节点的下一个节点指向前一个节点二叉树的遍历python
prev = curr 更新prev为当前节点
curr = next_node 更新curr为下一个节点
return prev 返回新的头节点
```
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论