C# 如何使用C中的函数绘制二叉树结构#

C# 如何使用C中的函数绘制二叉树结构#,c#,C#,我已经编写了构建二叉树的函数,它可以工作,但是我不知道如何在我的界面中绘制二叉树。 我编写的查找二叉树的函数如下所示: private Node BuildTreeFromPostAndMid(string Post, string Mid) { char genc=Post[Post.Length - 1]; Node gen = new Node(genc); string[] s = Mid.Split(genc); if (s[0] != "")

我已经编写了构建二叉树的函数,它可以工作,但是我不知道如何在我的界面中绘制二叉树。 我编写的查找二叉树的函数如下所示:

private Node BuildTreeFromPostAndMid(string Post, string Mid)
{
    char genc=Post[Post.Length - 1];
    Node gen = new Node(genc);
    string[] s = Mid.Split(genc);

    if (s[0] != "")
    {
        int l1 = s[0].Length;
        string newh = "";
        for (int i = 0; i < Post.Length - l1 + 1; i++)
        {
            if (IsSame(Post.Substring(i, l1), s[0]))
            {
                newh = Post.Substring(i, l1);
            }
        }
        gen.lc = BuildTreeFromPostAndMid(newh, s[0]);
    }
    else gen.lc = null;

    if (s[1] != "")
    {
        int l2 = s[1].Length;
        string newh = "";
        for (int i = 0; i < Post.Length - l2 + 1; i++)
        {
            if (IsSame(Post.Substring(i, l2), s[1]))
            {
                newh = Post.Substring(i, l2);
            }
        }
        gen.rc = BuildTreeFromPostAndMid(newh, s[1]);
    }
    else gen.rc = null;

    return gen;
}
private节点BuildTreeFromPostAndMid(字符串Post,字符串Mid)
{
char genc=Post[Post.Length-1];
节点gen=新节点(genc);
字符串[]s=Mid.Split(genc);
如果(s[0]!=“”)
{
int l1=s[0]。长度;
字符串newh=“”;
对于(int i=0;i

在UI中,用户可以输入Post-order和mid-order遍历二叉树系列,我应该在界面的某个地方绘制树(我没有足够的信用来上传我的图片,所以我键入它,希望你能理解我说的话)

几年前我在Silverlight、WPF和WinForms中做了类似的事情。你有多种选择

  • 使用标准的TreeView控件,我最初是在WinForms中这样做的。它不会像其他解决方案那样漂亮,但实现起来很快。您可以在其中投入一些工作,并在需要时对其进行自定义。这项工作已经完成,例如go

  • 通过嵌套控件容器构建UI树。每个容器实际上是一个节点,它包含当前节点及其子节点(每个子节点的容器等)的数据。这将是一个递归结构,这就是我在Silverlight和WPF中显示树的方式。它实现起来很简单,对齐是自动进行的,我想我使用了StackPanel作为容器,并定义了一个自定义控件来显示当前节点。但是要小心,它可能会导致性能问题,这取决于树的深度(指数增长),然而,我们没有任何问题

  • 在画布中构建UI树,这就是我最终在WinForms中所做的。这将需要更多的工作,因为您需要自己处理对齐。作为一个粗略的指导,画布的宽度将被你拥有的树叶数量分割,高度将被分割成树的层次。基本上,您在树上执行DFS操作,并从下到上将节点添加到画布中。正如我所说,你必须做更多的工作,以获得正确的路线,但它可能是值得的

  • 研究适合您需要的自定义控件,我相信您会找到一些,这不是一个罕见的问题,必须显示树结构


  • 这完全取决于“接口”用于框架的内容。WPF、WinForms、GTK、ASP等…我的文件名是WPF,所以我想它可能是WPF。那么也许我们帮不上忙。