我目前的理解是,数组(一维)可以用来表示左平衡二叉树。换句话说,从节点在二叉树图中的排列方式来看,我们可以填充数组的位置。
不过,这是否正确呢?相反,我们应该使用二叉树图来表示数组中的元素吗?在这种情况下,我们使用数组中的元素创建二叉树图,并使用公式l= 2n +1和r= 2n +2(其中n=父节点的数组索引、l=左子节点的数组索引和右子节点的数组索引)知道如何确定特定父节点的子节点的数组索引。
那么,使用数组来表示二叉树图,还是使用二叉树图来表示数组,哪个是正确的呢?或者这两种方式都是正确的?
发布于 2015-08-31 15:46:36
谢谢瑞德什和杨玉玉,谢谢你的回答和建议。
经过进一步的研究,我意识到左平衡二叉树(也称为“完整二叉树”)可以在编程代码中将表示为一维数组。这种表示的目的是为了便于实现操纵完整二叉树节点的代码。
相反,一维数组也可以从概念上被表示为一个完整的二叉树.这种表示的目的是为了便于实现使用二叉树理论对数组元素进行排序的代码。这方面的一个例子是“堆排序”,其中一个完整的二叉树被转换成一个最小或最大的堆,这个堆是完全排序的。
谢谢你的帮助:)
有用的链接:https://www.cpp.edu/~ftang/courses/CS241/notes/heap.htm http://courses.cs.vt.edu/~cs3114/Fall09/wmcquain/Notes/T03a.BinaryTreeTheorems.pdf
P.S.:很抱歉使用了“答案”选项来发布这个。由于字符限制,我无法将此作为评论发布。
发布于 2015-08-25 18:46:02
使用您的公式从Array创建二叉树并不能帮助我轻松地想象一棵二叉树的外观,而从二叉树图中节点的排列方式来看,如果我们填充数组的位置,则很容易可视化。
我们使用数组、链表或任何其他数据结构来在编程中映射一个真实世界的问题。反之亦然。
https://stackoverflow.com/questions/32200435
复制相似问题