该文被密码保护。 阅读全文
posted @ 2017-07-13 16:40 JunLiu37 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7} 阅读全文
posted @ 2017-07-13 10:26 JunLiu37 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 深度优先算法(DFS):和先序遍历差不多,是沿着树的深度遍历树的节点,尽可能深的搜索树的分支,一般是跟节点,左分支和右分支的顺序来进行查找的。因此可以借助堆栈的数据结构,由于堆栈是后进先出的顺序,由此可以先将右子树压栈,然后再对左子树压栈,这样一来,左子树结点就存在了栈顶上,因此某结点的左子树能在它 阅读全文
posted @ 2017-07-12 15:19 JunLiu37 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题目:给一棵二叉树,找出从根节点到叶子节点的所有路径。 思路(First Version):这道题要打印根节点到叶子节点的全部路径, 曾经我们有总结过,如果是输出全部路径的题目,那一定会想到深度搜索的方式。接下来怎么打印呢?只需要在深度优先搜索的每一层的时候用Arraylist保存从根节点 到当前节 阅读全文
posted @ 2017-07-12 14:58 JunLiu37 阅读(247) 评论(0) 推荐(0) 编辑
摘要: public class Solution { /** * @param root: The root of binary tree. * @return: An integer. */ //First Version // public int maxDepth(TreeNode root) { // // write y... 阅读全文
posted @ 2017-07-12 09:18 JunLiu37 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 这种算法只用到了一次入栈一次出栈就可以了, 九章算法: 递归实现: 阅读全文
posted @ 2017-07-11 21:00 JunLiu37 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一棵二叉树,返回其节点值的前序遍历。(非递归实现) 思路:从根节点开始找,先访问根节点,将该节点压如栈中,然后指向该节点的左孩子,在判断这个左孩子是否为空,如果不为空那么继续访问该节点并将其压如栈中,并指向该左孩子的左孩子,继续判断是否为空;如果他的左孩子为空那么弹出栈定元素,进行出栈,然 阅读全文
posted @ 2017-07-11 16:12 JunLiu37 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题目: Given a rotated sorted array, recover it to sorted array in-place. Have you met this question in a real interview? Yes Given a rotated sorted arra 阅读全文
posted @ 2017-07-11 10:01 JunLiu37 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题目: 你给出一个整数数组(size为n),其具有以下特点: 相邻位置的数字是不同的 A[0] < A[1] 并且 A[n - 2] > A[n - 1] 假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。 思路: 中点mid大于左右相邻点 阅读全文
posted @ 2017-07-10 09:47 JunLiu37 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 题目:在一个先升序后降序的数组中找到最大值,如果没找到就返回-1; [ 1,4,6,8,6,4,3,2] return 8; [10,9,8,7,6,5] return 10 思路:由于没有像其他数列一样给出一个特定值,这个时候需要一个可以用找到中间值M1 和M1+1进行判断,如果[M1] >[M1 阅读全文
posted @ 2017-07-09 22:50 JunLiu37 阅读(187) 评论(0) 推荐(0) 编辑