我遇到了这个采访问题,并想知道你为什么要采用二叉树的垂直总和。这个算法有用吗?
答案 0 :(得分:2)
对于平衡树,垂直和可以让您粗略地了解数据范围。二叉树虽然更容易编码,但可以根据插入数据的顺序采用更多的病态形状。垂直总和将是该病理学的良好指标。
查看vertical sum in binary tree处的代码。假设树的最大宽度,编写该算法。使用此算法,您将能够感受到不同类型的不平衡树。
该程序的一个有趣变体是使用固定数据集的排列来构建二叉树并查看各种垂直和。前导零和尾随零使您可以了解树的平衡方式,垂直总和可以让您深入了解数据到达顺序如何影响树的高度(以及树中数据的平均访问时间)。互联网搜索将使用动态数据结构返回此算法的实现。有了这些,我想你想要记录哪个总和包括根节点。
您的问题"此算法有用吗?"实际上,问题是二叉树与平衡树相比有多大用处。树的垂直总和记录了实现是否更接近O(N)或O(log N)。这是一篇关于[平衡二叉树]的文章[3]。在您的个人工具箱中放置一个平衡的树实现,并尝试记住您是否使用树的预订,有序或后序遍历来计算您的垂直总和。你会得到这个问题的A +。