随笔分类 -  Algorithm

摘要:本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2. 二叉树的形状不能被破坏(中间过程允许改变其形状)。通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递归(recursive),二是使用栈实现的迭代版本(stack+iterative)。这两种方法都是O(n)的空间复杂度(递归本身占用stack空间或者用户自定义的stack),所以不满足要求。(用这两种方法实现的中序遍历实现可以参考这里。)Morris Traversal方法可以做到这两点,与前两种方法的不同 阅读全文
posted @ 2013-06-15 18:22 AnnieKim 阅读(103733) 评论(35) 推荐(36) 编辑
摘要:问题的陈述在:https://code.google.com/codejam/contest/2418487/dashboard#s=p2&a=1,官方的分析在:https://code.google.com/codejam/contest/2418487/dashboard#s=a&a=2。这篇文... 阅读全文
posted @ 2013-05-08 21:35 AnnieKim 阅读(1680) 评论(0) 推荐(0) 编辑
摘要:本题要求编程实现求解整数的平方根。第一个思路是在可能的解范围内进行搜索,通过求平方判定是否为所求平方根。第二个思路是通过牛顿迭代法求解。第一个方法很容易想到,这篇博文主要是针对第二种方法,讲解如何通过牛顿迭代法求解多次方程的解。最后,会对此题目进行小的扩展,即求解实数的平方根。 阅读全文
posted @ 2013-04-18 16:46 AnnieKim 阅读(23673) 评论(21) 推荐(5) 编辑