对于树的周游
我们将树画在纸上,对纸上的树进行分析,得出了周游算法:广度优先和深度优先。
然后用笔,在纸上写出了功能函数。包括返回值,参数,具体的步骤。
但是我们要用到数据结构"tree",也要调用函数"leftChild()""rightSibling()""visit()"。
于是我们需要定义数据结构"tree",要实现函数"leftChild()".
如何定义一个数据结构“tree”,可以让我们把纸上的“tree”,按照原有的结构存储起来。好像不是很难。所有一个人有一个人的想法。
但是我们还要根据周游算法实现函数“leftChild()”。
利用有的数据结构,我们很容易实现。但是有的数据结构实现起来就很麻烦。
所以最终我们觉得容易实现函数的数据结构是好的。是我们需要借鉴的数据结构。也就是所说的,站在巨人的肩膀上。
可是我们可以设计出自己的数据结构和实现函数,也可以实现周游算法。而且这种实现在针对某类问题时,显得更加方便。
所有才有了不同的数据结构和配套的实现函数。
这时又有人在想,我们是不是可以设计出其他的周游算法,这样就可以不需要实现“leftChild()”函数,就不要按照那个目的去设计数据结构了。
想法是好的,但是这个算法是经过几代人的思考得到的精华,需要推陈出新,觉得难度还是有的。
但是如果有时间和精力,大可一试!
最后总结一下:数据结构为算法服务。数据结构是实现算法的基础,实现算法是数据结构的最终目的。
我们将树画在纸上,对纸上的树进行分析,得出了周游算法:广度优先和深度优先。
然后用笔,在纸上写出了功能函数。包括返回值,参数,具体的步骤。
但是我们要用到数据结构"tree",也要调用函数"leftChild()""rightSibling()""visit()"。
于是我们需要定义数据结构"tree",要实现函数"leftChild()".
如何定义一个数据结构“tree”,可以让我们把纸上的“tree”,按照原有的结构存储起来。好像不是很难。所有一个人有一个人的想法。
但是我们还要根据周游算法实现函数“leftChild()”。
利用有的数据结构,我们很容易实现。但是有的数据结构实现起来就很麻烦。
所以最终我们觉得容易实现函数的数据结构是好的。是我们需要借鉴的数据结构。也就是所说的,站在巨人的肩膀上。
可是我们可以设计出自己的数据结构和实现函数,也可以实现周游算法。而且这种实现在针对某类问题时,显得更加方便。
所有才有了不同的数据结构和配套的实现函数。
这时又有人在想,我们是不是可以设计出其他的周游算法,这样就可以不需要实现“leftChild()”函数,就不要按照那个目的去设计数据结构了。
想法是好的,但是这个算法是经过几代人的思考得到的精华,需要推陈出新,觉得难度还是有的。
但是如果有时间和精力,大可一试!
最后总结一下:数据结构为算法服务。数据结构是实现算法的基础,实现算法是数据结构的最终目的。