2
A
回答
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());
2
不是最好的方式,如果樹大可能不是很好,但你可以創建這樣一個遞歸函數:
public String ToString()
{
return id + "{" + a.ToString() + ";" + b.ToString() + "}";
}
隨着:id
當前節點的ID,a
和b
的兩個子
編輯
你需要絕對肯定這是一棵樹,它不含有任何週期。
相關問題
- 1. 在Java中的二叉搜索樹可視化
- 2. 如何在C++中可視化二叉樹
- 3. 在Java和C++中可視化二叉樹
- 4. 用於可視化二叉查找樹的圖形庫
- 5. 爲文檔繪製二叉樹的可視化工具
- 6. VS中對象樹的可視化
- 7. 二叉樹到二叉搜索樹(BST)
- 8. 二叉樹 - 哪一種二叉樹
- 9. V8 JavaScript對象VS二叉樹
- 10. 二叉樹vs二進制搜索樹大哦分析
- 11. 插入二進制搜索樹vs二叉樹插入
- 12. 二叉樹在Javascript
- 13. 在二叉樹中的BFS
- 14. 在二叉樹中插入
- 15. 在二叉樹中遞歸
- 16. 在二叉樹中交叉的節點
- 17. Python二叉樹
- 18. 非二叉樹
- 19. balanced()二叉樹
- 20. 二叉樹
- 21. JAVA:二叉樹
- 22. 二叉樹
- 23. 二叉樹值
- 24. Python的二叉樹序列化問題
- 25. 如何序列化二叉樹
- 26. 二叉樹頂視圖分割故障
- 27. 遞歸和在二叉樹
- 28. 繪製二叉樹在C
- 29. 映射在二叉樹
- 30. 在二叉搜索樹
會在哪裏你畫的?在[可視化工具](http://msdn.microsoft.com/en-us/library/zayyhzts.aspx)中? – 2012-07-25 15:29:52
@MarkByers好吧,聽起來不錯,你知道這樣一個可視化器嗎?或者我應該從頭開始編寫它?我不確定這是值得的努力.... – sara 2012-07-25 15:32:51