一、题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、思路 递归,详见代码。 三、代码 public class&nbs…
分类:剑指offer
剑指offer六之求旋转数组的最小数字
一、题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1…
剑指offer十九之顺时针打印矩阵
一、题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12…
剑指offer五十七之二叉树的下一个结点
一、题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 二、思路 结合图,我们可发现分成两大类: 1、有右子树的,那么下个结点…
打印1到最大的n位数 12
两种解法,一种递归,一种判断该数加1是否最高位进1 第二种较简单 主要两个函数,一个是打印数字,要求判断该数字是否是第一个不为零的数字,然后后面的依次打出即可 &n…
剑指offer四十二之和为S的两个数字
一、题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 二、思路 数列满足递增,设两个头尾两个指针i和j,若ai + aj &g…
剑指offer二十六之二叉搜索树与双向链表
一、题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 二、思路 对二叉搜索树中序遍历的结果即为排序的结…
剑指offer十三之调整数组顺序使奇数位于偶数前面
一、题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 二、思路 &nbs…
剑指offer十七姊妹篇之二叉树的创建、遍历、判断子二叉树
1、二叉树节点类 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int…
【剑指offer】41-50题
41.输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 思路:定义两个指针,分别递增,寻找和为s的序列。 代码实现: public ArrayList<ArrayList&l…
剑指offer二十一之栈的压入、弹出序列
一、题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出…
01-复杂度1 最大子列和问题(剑指offer和PAT)
01-复杂度1 最大子列和问题 (20分) 给定KK个整数组成的序列{ N1, N2, …, NK },“…