Q
发现二叉树
7
A
回答
10
其所谓直径树的。
int diameter(Tree * t) // post: return diameter of t
{
if (t == 0) return 0;
int lheight = height(tree->left);
int rheight = height(tree->right);
int ldiameter = diameter(tree->left);
int rdiameter = diameter(tree->right);
return max(lheight + rheight + 1, max(ldiameter,rdiameter));
}
alt text http://www.cs.duke.edu/courses/spring00/cps100/assign/trees/diameter.jpg
4
什么您正在寻找可命名graph diameter。为了得到它,你需要计算从任何顶点到其他任何顶点的路径,然后遍历所有顶点并找到最大的路径。
可以使用Dijkstra's algorithm或者通过简单地distance matrix来实现尽管它会比Dijkstra算法更多的时间(这可通过adjacency matrix供电来实现)。
+0
+1首先得到它:) – 2010-03-15 11:14:27
1
由于这是一个树,只有一个任何对顶点之间的路径。这使我们更容易找到图形的直径。
做到这一点,最简单的方法是通过做树的两个简单的遍历。首先,使用任意节点作为根,并使用简单的DFS/BFS计算每个顶点的距离。现在,取距根最远的节点(这是距离最远的一对节点的第一个节点),并将其作为新根,然后运行另一个树计算距离的遍历。距离它最远的节点是该对中的另一个节点。
为什么这项工作的证明留作练习。
还有一个计算通过计算并比较最远处对用于树从作为根(在另一个答案已经提到)的任意节点开始的每个子树的最远处的一对的另一种方式。
相关问题
- 1. 实现二叉树
- 2. 二叉树实现
- 3. 从二叉树实现二叉树实现的线程
- 4. 最坏情况发现二叉树
- 5. 错误发现二叉搜索树
- 6. PHP二叉树实现
- 7. 二叉树实现C++
- 8. 二叉树实现C++
- 9. 二叉树 - 哪一种二叉树
- 10. 二叉树到二叉搜索树(BST)
- 11. 二叉树findHeight
- 12. balanced()二叉树
- 13. 二叉树
- 14. 二叉树
- 15. JAVA:二叉树
- 16. 二叉树
- 17. 二叉树
- 18. 非二叉树
- 19. 二叉树叶
- 20. Python二叉树
- 21. 二叉树值
- 22. OpenMP - 二叉树
- 23. 二叉树
- 24. 二叉树中最大的二叉树搜索树
- 25. 均衡的二叉搜索树实现
- 26. 实现我自己的二叉树
- 27. 实现二叉搜索树插入
- 28. 二叉搜索树在C#实现
- 29. 遍历二叉树时出现NullPointerException
- 30. 如何实现非二叉树
根据每项措施的远景?路径? 你能举一个例子来澄清你的问题吗? – Riduidel 2010-03-15 10:45:56
你在这里测量的距离是多少?树中的路径长度? – Joey 2010-03-15 10:46:17