剑指offer
Doris-wr
这个作者很懒,什么都没留下…
展开
-
剑指offer—二叉树的后续遍历序列
**题目描述:**输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。**解题思路:**首先,要明白题目中所给的条件,“二叉搜索树”,“后序遍历”。二叉搜索树具有下列性质:若左子树不为空,则左子树的上的所有节点的值均小于根节点的值;若右子树不为空,则右子树上的所有节点的值均大于它的根节点 的值。后序遍历即先访问左子树再访问右子树再访问跟,因此二叉搜索树后序序列的合法序列是,对于一个元素x(也就是根节点),如果去掉最后一个原创 2020-07-25 15:42:53 · 210 阅读 · 0 评论 -
剑指offer—二叉树的层序遍历
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思想:解决此问题需要借助一个队列来完成前置条件:先将root入队列①出一个节点②访问该节点,将该节点的节点值添加到顺序表中③将当前节点的左子树入队列,再将右子树入队列(注意判空)代码如下:public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<In原创 2020-07-24 15:17:00 · 147 阅读 · 0 评论 -
剑指offer—栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思想:要判定第二个序列是否可能是该栈的弹出序列,就要使用指定的入栈顺序模拟出来对应的弹栈序列,我们设入栈顺序序列式pushv, 出栈序列popv。则popv的第一个元素,一定是最后入栈,最先弹原创 2020-07-24 15:02:04 · 103 阅读 · 0 评论 -
剑指offer—旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目解析:方法一:理论上这道题遍历一遍即可,但是我们要有效利用到题目中所给的条件从而达到高效。按照要求,因为是非递减的数组(即已经排好序的,后面的值大于等于前面的值),所以最小值要么在最开始(旋转前后数组没有发生变化,即旋原创 2020-07-23 09:42:55 · 111 阅读 · 0 评论