일부 이진 트리가있는 C# 프로그램을 구현 중입니다.VS에서 이진 트리를 시각화하십시오.
디버깅에 사용할 수있는 Visual Studio에 추가 기능이 있습니까?
런타임에 트리를 그려야합니다.
일부 이진 트리가있는 C# 프로그램을 구현 중입니다.VS에서 이진 트리를 시각화하십시오.
디버깅에 사용할 수있는 Visual Studio에 추가 기능이 있습니까?
런타임에 트리를 그려야합니다.
다음은 문자열 표현으로 변환하는 간단한 바이너리 트리입니다. 당신은 아마도 자신의 바이너리 트리 클래스를 가지고 있지만 이것과 동일한 일반 알고리즘을 사용할 수 있습니다.
여기서는 하나의 탭을 사용하여 각 노드를 구분합니다. 각 노드의 내용이 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);
}
}
그리고 실제로 그것을 사용 :
이아니 가장 좋은 방법, 그리고 나무가 큰 경우 아마 매우 좋지 않다,하지만 당신은 같은 재귀 함수를 만들 수 있습니다 id
현재 노드의 ID, a
및 b
:와
public String ToString()
{
return id + "{" + a.ToString() + ";" + b.ToString() + "}";
}
두 아이
편집 당신은이 나무라고하고 어떤 사이클을 포함하지 않는다는 것을 확신 할 필요가
.
당신이 그것을 어디 을 그릴 것입니다
? [시각화 프로그램] (http://msdn.microsoft.com/en-us/library/zayyhzts.aspx)? –@ MarkByers 글쎄, 좋은 소리, 그런 visualizer 알고 계십니까? 아니면 처음부터 다시 써야합니까? 나는 노력의 가치가 있는지 확신하지 못한다 .... – sara