这可能很幼稚,但是我想知道,它是所有遍历类型的二叉树(普通树,排序树和平衡树)的上下文:
- 深度优先预购
- 深度优先
- 深度优先后继
- 广度优先
预购和后购商品的实际用途是什么?我的意思是,是否存在某种类型和/或配置的二叉树,其中前顺序和/或后顺序遍历将比其他两个具有(某些)优势?
AFAICS,二进制树的某些类型和配置对于顺序和广度优先的二进制树可能具有一定的优势:
对于平衡二叉树,与深度优先相比,任何深度优先遍历将使用较少的内存存储空间(例如,对于6或7个节点的平衡二叉树,高度为2,因此任何深度优先遍历将需要存储最大值为在任何给定时间有2个节点,而最后一级有3个或4个节点,因此广度优先遍历在某个点最多需要存储3个或4个节点。在这种情况下,使用有序遍历将占用最少的内存,并以其自然顺序访问节点。
对于不平衡的二叉树,如果它接近最坏情况的插入方案,则与深度优先遍历相比,广度优先遍历将减少占用的内存。因此,在这种情况下,广度优先提供了优势。顺序遍历又具有按其自然顺序访问值的优点。
但是,我无法想到在遍历前后都比其他两个更有利的情况。
A + B * C
,这对于普通用户而言比后缀顺序的任何前缀都容易理解。