【发布时间】:2020-08-26 21:21:11
【问题描述】:
我有一棵二叉树。 每个节点都是一个具有 2 个值的结构:宽度和长度。
用户的输入是根据一个或两个标准(高度、宽度)对它们进行分组。 对于此分组,仅考虑叶节点。 考虑附图中的树。 如果用户说基于长度的组,结果将是 [8,5,7],因为它的长度是 20,而 [9,6] 因为它的长度是 10。
如果用户根据长度和宽度说组,那么输出将是 [8,5] w=20,l=30 , [9,6] l=10,w=20 , [7] l=20, w=10 。
我的处理方法是遍历树两次并收集 2 个“列表列表”并对其进行处理以获得一个新的“列表列表”,它将唯一的 l&w 值组合在一起。
用户还可以选择将级别作为输入。如果将级别作为输入给出,那么相同的步骤会发生在该级别而不是叶节点。
有没有比我提到的更好的方法来做到这一点? PS。我正在用 C++ 编写这段代码。
【问题讨论】:
标签: c++ algorithm data-structures tree tree-traversal