面试题—树

  1. 二叉树的深度
    题目:输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点一次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
    分析:如果只有根节点,深度为1.如果只有左子树,那么树的深度是左子树深度+1;如果有左子树和右子树,则就是两者深度的最大值再加1.递归很容易实现。 Continue reading

面试题—查找和排序

如果面试题要求在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,都可以尝试用二分查找算法。如果需要在O(1)时间内查找某一元素,则考虑哈希表结构,其缺点是需要额外的空间来实现。

  1. 旋转数组的最小数字(二分查找)
    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. Continue reading