在VS中可视化二叉树

时间:2012-07-25 15:26:29

标签: c# visual-studio debugging tree

我正在实现一个包含二叉树的C#程序。

我可以使用Visual Studio进行调试吗?

我需要它在运行时绘制树。

2 个答案:

答案 0 :(得分:2)

不是最好的方法,如果树很大,可能不是很好,但你可以创建一个递归函数,如:

public String ToString()
{
    return id + "{" + a.ToString() + ";" + b.ToString() + "}";
}

使用:id当前节点的ID,ab两个孩子

修改

您需要绝对确定这是一棵树,并且它不包含任何循环。

答案 1 :(得分:2)

这是一个简单的二叉树,其中包含将其转换为字符串表示的方法。您可能拥有自己的二叉树类,但可以使用相同的通用算​​法。

这里我使用一个标签来分隔每个节点。如果每个节点的内容的ToString大于8(?)个字符,则可能需要使用更多的空格,多个制表符,或者在每个节点的字符串的开头添加一些字符帮助您想象它。

public class Node<T>
{
    public T Data { get; set; }
    public Node<T> Left { get; set; }
    public Node<T> Right { get; set; }

    public string displayNode()
    {
        StringBuilder output = new StringBuilder();
        displayNode(output, 0);
        return output.ToString();
    }

    private void displayNode(StringBuilder output, int depth)
    {

        if (Right != null)
            Right.displayNode(output, depth+1);

        output.Append('\t', depth);
        output.AppendLine(Data.ToString());


        if (Left != null)
            Left.displayNode(output, depth+1);

    }
}

然后实际使用它:

Node<string> root = new Node<string>() { Data = "root" };
root.Left = new Node<string>() { Data = "1" };
root.Right = new Node<string>() { Data = "2" };

root.Left.Left = new Node<string>() { Data = "3" };
root.Left.Right = new Node<string>() { Data = "4" };

Console.WriteLine(root.displayNode());