算法我自己写了 在基于dos界面可以运行 但移到vc里面就不知道怎么创建类,不知道如何实现图像演示!

解决方案 »

  1.   

    主要是学习一下 在windows当中画图的技巧……
      

  2.   

    yigerenjia能具体说说吗?举个例子吧谢谢!
      

  3.   

    请问wflishh怎样把方法改为成员函数呢? 
      

  4.   

    用tree控件来演示,codeproject上有篇文章,自己去找找www.codeproject.com
      

  5.   

    我在dos下作过,但那是字符界面,最大是25行 * 80列。首先你需要确定根节点的位置
    然后根据父节点的位置和深度确定左孩子和友孩子的位置。我建议你假设自己的2叉树是
    满2叉树。这样只要节点的总数和深度不超过你设置的最大值,那么无论怎样的2叉树都
    可以使用同一种方法计算节点的位置。应该完全可以满足演示的要求。然后是你还需要设定一个节点的显示的大小,比如一个圆,当然这个时候可以假设节点位
    置就是圆心在屏幕或者客户区的坐标。然后建议你专门做一个方法是划线,连接父节点和
    孩子节点。我那时是用制表符代替的。原形可以如下:
    DrawNodeLine(Node cFather,Node cSon)// Node是一个结构包含节点的位置
    还需要一个方法是画节点的函数原形可以如下:
    DrawNode(Node cNode)然后再在你的动态构造2叉树的函数中,创建完新节点的地方加入如下的代码。我用伪代码
    写,你自己换成C++代码:
    ...
    cNewNode;// 假设这是你动态生成的新的节点,注意位置已计算好
    ...
    DrawNode(cNewNode);
    if (cNewNode has a father node)
    {
        Find the Father Node save to variable cFather
        // And we need draw a line to connect father node
        DrawNodeLine(cFather,cNewNode);
    }为了使得代码看着清楚一些,也可以把上面的代码在封装成一个方法:
    void InserNewNodeToDigram(Node cFather,Node cNewNode)
    {
        if (cNewNode == null)
            return;    DrawNode(cNewNode);    // cNewNode has a father node
        // and need draw a line to connect father node
        if (cFather != null)         
             DrawNodeLine(cFather,cNewNode);
    }这样就差不多了,在你的动态创建2叉树的程序中,每完成创建一个新的节点就调用方法
    InserNewNodeToDigram。有可能InserNewNodeToDigram还需要窗口的绘图对象作参
    数,再细的就自己考虑吧。DrawNodeLine和DrawNode的实现细节请参考相关的绘图方法或者API。具体细节已和创
    建2叉树无关了。