练习2.64
一开始list->tree会调用partial-tree,而后者会将每次传入的表分成两部分,然后组合成一个平衡树。中间运用了迭代的技巧,而这是让众多树枝产生的源泉。如果我们对前面的表’(1 3 5 7 9 11)做计算,返回的结果将会是:
(5 (1 () (3 () () ) ) (9 (7 () () ) (11 () () ) ) )
其中的空表则表示的左、右没有子树。
画出产生的树我就不再这里列出了,最终结果和图2-16中的最后一个类似,但有区别:将图中的1换成3,然后在1的左子树上为空表,右子树则为3。
而b小题中的复杂度,每次遇到一个节点,该函数都会用一次make-tree来构造,后者的复杂度是1,因此对于有n个结点的树来说,这个函数的复杂度就是n。
感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。
为使本文得到斧正和提问,转载请注明出处:
http://blog.youkuaiyun.com/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.youkuaiyun.com/nomasp
本文详细解析了如何通过partial-tree函数将列表转换为平衡树,并以具体实例说明其过程。通过递归技巧,文章展示了如何构建平衡的二叉树,并分析了make-tree函数在构造过程中的时间复杂度。
312

被折叠的 条评论
为什么被折叠?



