剑指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小时内删除。