剑指offer
winnerziqi
这个作者很懒,什么都没留下…
展开
-
剑指offer_python:按之字行打印二叉树(栈)/把二叉树打印成多行(队列)
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None# self.next = Noneclass Sol原创 2021-02-16 20:51:14 · 185 阅读 · 0 评论 -
剑指offer_python:二叉树的下一个结点(循环)
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None# self.next = Noneclass Sol原创 2021-02-16 19:40:43 · 86 阅读 · 0 评论 -
剑指offer_python:对称的二叉树(递归)
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSymmetrical(self, pRoot):原创 2021-02-16 18:55:20 · 98 阅读 · 0 评论 -
剑指offer_python:二叉树中和为某一路径(广度优先搜索)
输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneimport copyclass Solution:原创 2021-02-16 17:36:58 · 65 阅读 · 0 评论 -
剑指offer_python:从上往下打印二叉树(数组存储结点)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回从上到下每个节点值列表,例:[1,2,3] def PrintFromTopToBottom(self,原创 2021-02-16 11:41:25 · 98 阅读 · 0 评论 -
剑指offer_python:二叉树的镜像(递归)
操作给定的二叉树,将其变换为源二叉树的镜像。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回镜像树的根节点 def Mirror(self, root): # write code here原创 2021-02-16 11:14:40 · 89 阅读 · 0 评论 -
剑指offer_python:树的子结构(递归)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def HasSubtree(self, pRoot1, pRoot2):原创 2021-02-16 10:49:42 · 67 阅读 · 0 评论 -
剑指offer_python:重建二叉树(递归找到左右子树)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.ri原创 2021-02-16 10:04:42 · 128 阅读 · 0 评论 -
剑指offer_python:合并两个排序的链表(四个指针)
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。需要四个指针:最终输出、前面指针、两个列表中的指针# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表 def Merge(self, pHead1, pHea原创 2021-02-14 17:58:54 · 76 阅读 · 0 评论 -
剑指offer_python:翻转链表(三个指针)
输入一个链表,反转链表后,输出新链表的表头。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # write code here # 1.将现有的头换成原创 2021-02-14 17:22:14 · 89 阅读 · 0 评论 -
剑指offer_python:链表中倒数第k个结点(两个指针间隔为K)
输入一个链表,输出该链表中倒数第k个结点。k如果小于链表的长度,我们可以定义两个变量,这两个变量中间间隔为k# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindKthToTail(self, head, k): # write code here原创 2021-02-13 11:19:14 · 103 阅读 · 0 评论 -
剑指offer_python:从尾到头打印链表(用另一个数组存储)
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。用另一个数组进行存储然后就可以打印# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self,原创 2021-02-13 09:46:28 · 73 阅读 · 0 评论 -
剑指offer_python:栈的压入、弹出序列(压入后循环判断是否需要弹出)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)# -*- coding:utf-8 -*-class Solution: def IsPopOrder(self, pushV, popV): # write code here原创 2021-02-12 21:07:17 · 170 阅读 · 0 评论 -
剑指offer_python:包含min函数的栈(定义一个新数组来存放当前最小值)
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] self.minValue = [] #用来存储当前最小值 def push(self, node): self.stack.append(node) if self.minVa原创 2021-02-12 20:29:39 · 76 阅读 · 0 评论 -
剑指offer_python:调整数组顺序使奇数位于偶数前面(冒泡排序)
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。可以采用稳定的冒泡排序方法class Solution: def reOrderArray(self , array ): # write code here n = len(array) for i in range(n): for j in range(n原创 2021-02-12 18:39:38 · 273 阅读 · 0 评论 -
剑指offer_python:螺旋数组的最小数字(二分法)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-class Solution: def minNumberInRotateArray(self, rotateArray): # write code here ''' for i in range(0, len(ro原创 2021-02-12 16:43:27 · 221 阅读 · 0 评论 -
剑指offer_python:用两个栈实现队列(首尾元素通过两数组对调)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution: def __init__(self): self.acceptStack = [] self.outputStack = [] def push(self, node): self.acceptStack.append(node) # write code here def pop(self):原创 2021-02-12 15:54:45 · 94 阅读 · 0 评论 -
剑指offer_python:替换空格(replace用法)
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。replace的用法class Solution: # s 源字符串 def replaceSpace(self, s): # write code here return s.replace(' ','%20')新建存储空间class Solution: # s 源字符串 de原创 2021-02-12 15:33:42 · 760 阅读 · 0 评论 -
剑指offer_python:斐波那契数列/跳台阶/变态跳台阶(循环)
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n≤39# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here ''' 递归会超时,时间复杂度为2^n if n == 0: return 0 if n == 1:原创 2021-02-12 10:47:58 · 207 阅读 · 0 评论