当前位置: 首页 > 知识库问答 >
问题:

在没有完整树遍历的情况下遍历树叶节点

黎玺
2023-03-14

在具有父子指针的通用树结构中,是否可以在不遍历完整树的情况下遍历叶节点?例如,从最左边的叶节点开始。想法是在深树上进行优化。

共有2个答案

宋明亮
2023-03-14

哈哈要到达每个叶子,您必须遍历每个节点。

因为树是非循环的,所以没有冗余路径。因此,没有“额外”的方法来获得位置,因此也没有捷径可走。每个节点要么是(a)叶,要么是(b)到一个或多个叶的关键路径上。

必须以某种方式增强数据结构以优化叶遍历。

空翼
2023-03-14

如果用普通的c指针方式表示树,并且根指向子级,则无法实现这一点,因为树是一个非循环图。

如果您以不同的方式表示树(例如使用数组作为堆),您只能遍历子级,因为它们位于数组中的偏移量处。

请注意,平衡二叉树的叶子占树的一半大小,因此仅遍历叶子不会增加复杂性。对于平衡的三元树和其他接近完整的 n 元树,分数是一个较大的数字。

 类似资料:
  • 这是一个相当简单的问题,我注意到当我表示一棵树时,无论我用哪种方式(后排序,按顺序,前排序)树叶总是以相同的顺序出现,从左到右。 我只是想知道为什么,这是有原因的吗? 我刚开始研究它们,就想到了这个。 编辑: 我有一棵这样的树: 叶节点为:D、E和F 预购顺序为:A、B、D、C、E、F 顺序是:D,B,A,E,C,F 后序是:D,B,E,F,C,A 叶子节点总是从左到右出现,不管我选择哪个顺序,问

  • 问题内容: 我不太确定自己是在说这种权利,但请耐心等待。 我想知道是否有可能在SQL(特别是MySQL)中做这样的事情:假设我们有树状数据保存在下表中的数据库中: 因此,除“根”行外,每一行都有一个父级,而叶行除外,每一行都有子级。 是否可以仅使用SQL查找任何给定行的所有后代? 问题答案: 可以仅使用SQL而不是在单个查询中获取所有后代。但是我敢肯定,你知道了。我假设您的意思是您想在单个查询中执

  • 我们已经见到了树数据结构的基本功能,现在是看树的一些额外使用模式的时候了。这些使用模式可以分为我们访问树节点的三种方式。有三种常用的模式来访问树中的所有节点。这些模式之间的差异是每个节点被访问的顺序。我们称这种访问节点方式为“遍历”。我们将看到三种遍历方式称为前序,中序和后序 。让我们更仔细地定义这三种遍历方式,然后看看这些模式有用的一些例子。 前序 - 在前序遍历中,我们首先访问根节点,然后递归

  • 所以我在研究树遍历算法。例如,在K-d树遍历中,我们的目标是遍历节点直至叶子。这与其说是一个树搜索,不如说是一个根到叶的遍历。 在这种情况下,递归解决方案就足够了。但是,在C等语言中,递归调用函数需要将值推送到堆栈上,并在堆栈帧之间跳跃等。标准的递归方法类似于: 因此,考虑到二叉树有一个明确的上界(我相信这也可以扩展到其他树类型),以迭代方式执行此遍历是否更有效: 二叉树的最大高度是它的节点数,而

  • 我已经实现了一个四叉树来对图形中的点进行排序。每当一个点落在已经包含一个点的象限内时,该象限就会再次细分,以允许每个点落入其自己的象限。每个节点都具有以下属性: 假设我想遍历存储在这棵树中的每个节点,并计算落在给定矩形边界内的点数,我将如何递归检查树中的每个节点(假设我已经有方法检查它们是否落在某个区域)?

  • 还拿”爱丽丝梦游仙境”的文档来做例子: html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p><b>The Dormouse's story</b></p> <p>Once upon a time there were three little sisters; and their