一、题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、思路 递归,详见代码。 三、代码 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、有右子树的,那么下个结点…
剑指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二十一之栈的压入、弹出序列
一、题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出…
剑指offer五十五之链表中环的入口结点
一、题目 一个链表中包含环,请找出该链表的环的入口结点。 二、思路 方法一: 假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程)。 定义一个快指…
剑指offer十八之二叉树的镜像
一、题目 操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义: 源二叉树 : 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树: 8 …
剑指offer五十九之按之字形顺序打印二叉树
一、题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。二、思路 详见代码 三、代码 import java.ut…