发明一个算法是挺难的,实现一个算法就是普通人也能做的工作了,写一个比较好的实现则需要相当的经验。
如果描述只有一个名字,写的人正好又没记住对应的是什么,相当于要人发明这个算法。
如果这人只记得或者收到了算法原理的描述,那么只是推导一个实现。为难之处主要就是各种边界条件处理要周全,以及找出较为优化的实现方式。例如,看似简单的二分查找算法发布之后,没有 bug 的实现12年之后才搞出来。
如果这个人正好刚学过或者才折腾过,能记住详情,那就只是个体力活罢了。
这个要分情况讨论。
1、对于算法不了解。 这个难点在于删除节点和增加节点的时候,二叉树的调整方式。往往可能前一秒看资料的时候懂了,但是隔半个月就忘了,主要还是不熟练、使用频次太低造成的。
2、对于语言操作不熟练。 这个说白了就是逻辑性复杂的代码写太少。大脑对于存放指针、索引这些东西的堆栈溢出了,说通俗点就是脑子不够用了。就像下棋和打牌,如果你习惯了算后3步,但是突然有一天让你算后6步就会算不过来,感觉脑子很累。
最后讲一下红黑树,个人认为红黑树是对于AVL平衡树的一种剪枝,如果能手写出AVL平衡树然后再去手写红黑树会比较简单。