您的位置:首页 > 编程语言 > C语言/C++

用C++实现二叉树的字符图像自适应显示

2014-10-21 13:09 218 查看
为了实现自适应显示,我的思路:

在绘制当前节点时,如果发现重叠,就将父节点的树枝长度加一,然后清除整个图像,重新绘制。

为此,需要在原来的二叉树节点中增加一个树枝长度属性

内部图像类的设计很关键,它提供随机写入能力,并且需要返回写入是否成功(如果写入点已经不为空,则返回假)

绘制单个节点的接口设计:

它尝试绘制节点,以及它的左右树枝

并在遇到重叠的情况下调整该节点的父节点的树枝长度(每次增加1),并停止绘制

如果没有遇到重叠,就子节点递归,完成整个绘制

整个过程动态调整树枝长度,每次调整后重叠的情况都比之前好一点,最终所有节点都不会重叠

我的收获:

类的接口设计很关键,好的接口设计可以提高代码内部重用性,使代码易写易懂

比如本设计中的绘制节点这个接口的设计

bool Tree::draw_node(Img& img, int w, int h, Node* n, Node* father)

返回bool是由于该方法在绘制时遇到重叠要立即停止递归

int w, int h是绘制节点的位置

Node* n 是当前需要绘制的节点

Node* father 是为了方便修改父节点的长度而考虑加入的

代码长度200行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: