二叉树是数据结构最重要的部分之一,数据结构据说是学习编程的基础课程,虽然好像和平时工作关系不大,但面试时面试官很喜欢出点数据结构算法来刁难你。
一直以来,写算法好像只是C/C++的事,一串串数字输出在冰冷的手术台,sorry,是控制台上。但中间的过程,只能画在草纸上,或者像下盲棋一样用用脑汁算。其实我们多数人并不需要到高手的那个境界,只要会走法,能走两步就够了,所以有一个棋盘的话会对我们练习帮助很大。
下面是我在WPF窗口上画的一个二叉树:
每个节点都是一个Canvas,里面又包含一个Ellipse和TextBlock。
节点通过Margin属性来定位。在递归显示时,先计算子节点的Margin,然后再通过父节点和子节点的Margin算出连线的起点和终点坐标。需要注意的是,从上到下,树枝叉的角度要依次递减,不然可能会出现节点重叠或树枝相交。
虽然刚开始接触WPF,不过看起来不算太难,呵呵。
下载地址请点击。