`
yanwt
  • 浏览: 97982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

知道叶子节点集合怎么生成树

阅读更多
先说一下问题吧
有一颗任意节点的树型结构,级数和节点数不确定,给定叶子节点集合怎么按照原树生成一颗树。要求父节点的子节点如果都不在集合中,则该节点不显示。

我目前想到的算法这样
定义树形结构:
treeNode{
id
name
parentid
set<treeNode>
}

定义一Map<id,treeNode>存放父节点对象。

利用递归遍历叶子节点集合,取父节点id,检查Map中是否存在该节点。
如果存在则取出该父节点,在该节点的叶子节点中添加当前叶子节点,保存在Map中,递归该父节点直至到根节点。
如果不存在,则新建个treeNode,在该节点的叶子节点中添加当前叶子节点,保存在Map中,递归该父节点直至到根节点。
最终取出根节点对象就是最终的树。

不知道大家是否有更优的算法。
分享到:
评论

相关推荐

    建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数

    二叉树可执行代码,用了就知道 。 二叉树的遍历、线索及应用( 用递归或非递归的方法都可以) [问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的...

    ID3决策树算法及其相关算法

    其叶子结点对应于决策结果,其他每个结点对应一个属性测试,每个节结包含的样本集合根据属性测试的结果被划分到子结点中,根结点包括样本全集。从根结点到每个叶子结点代表了一种分类规则。 一般比较常见的决策树...

    数据结构 哈弗曼编码与解码

    给定字符集的哈夫曼树生成后,依次以叶子为出发点,向上回溯至根为止。上溯时走左分支则生成代码 0 ,走右分支则生成代码 1 。重复上述过程直到编码所有的叶子结点。 Huffman译码算法 译码是编码的逆运算。译码过程...

    combi-tree:Clojure(Script) 库,用于生成组合树和序列元素的组合

    深度为n组合树是一棵树,其节点和叶子是原始集合的项目,因此到叶子的每条路径都提供原始集合的n项目的可能组合,同时仍保留它们的原始顺序。 当需要解析输入并检查它是否是来自参考集合的项目的非歧义组合时,...

    南理工初试试题

    7.求图的最小生成树有两种算法, (13) 算法适合于求稀疏图的最小生成树。 8.一个深度为k的,具有最少结点数的完全二叉树按层次,(同层次从左向右)用自然数依此对结点编号,则编号最小的叶子的序号是 (14) ;编号是i...

    数据结构在线自测.docx

    数据结构在线自测 单项选择题 第1题 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( ) A、48 B、51 C、63 D、72 第2题 按照二叉树的定义,具有3个结点的二叉树有( )种。 A、3 B、4 C...

    [详细完整版]数据结构练习.doc

    以数据集合{4,6,8,10,12,15,18,20,22}中的元素为叶子结点的权值构造一棵哈夫曼树 ,并计算其带权路径长度。 3. 分别用Prim算法和Kruskal算法求解出下图的最小生成树,在空内填写每一步所加入的 边的两个顶点,如...

    急切式和懒惰式学习策略相结合的决策树分类模型 (2005年)

    它生成的决策树的结点,如普通决策树一样,包含单变量分裂,但是叶子结点相当于一个懒惰式决策树分类器。这种分类模型保留了普通决策树良好的可解释性,实验结果表明它提高了分类速度和分类精确度,特别是在大的数据...

    【C语言->数据结构与算法】->树与二叉树概念&哈夫曼树的构造

    树状图是一种数据结构,它是由n(n&gt;=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个结点有零个或多个子结点;...

    PROcedural:我在搅拌机中制作的随机程序物品的集合

    我在搅拌机中制作的随机程序物品的集合 条码 生成随机条形码 树叶 我在CGMatter / Default Cube教程之一中看到的随机叶子的创建 n_gon “2D变形球”(N边形)的动画的启发视频。 N边形很难制作,但我以某种方式弄...

    数据结构(C++)有关练习题

    设计一个构造函数,当对象结束时,要释放整个二叉搜索树所占的内存空间(提示,通过后序遍历算法找到叶结点,并删除叶结点,不断重复此过程,直到整科树为空); 2、实现1所要求的代码后,运行设计好的代码,将...

    计算机二级公共基础知识

    当一个结点既没有左子树也没有右子树时,该结点即为叶子结点。 例如,一个家族中的族谱关系如图1-1所示: A有后代B,C;B有后代D,E;C有后代F。 典型的二叉树如图1-1所示: 详细讲解二叉树的基本概念,见表1-2。 图...

    毕业设计-基于Python的主动学习推荐系统的实现.zip

    对每一个test商品,从树的根节点开始向下走,利用目标叶子节点的latent vector作为它的特征向量 利用特征向量和所有物品的特征向量的点积预测评分,计算RMSE(对每一层都计算) 命令:python build_tree.py [input_...

    传智播客扫地僧视频讲义源码

    13_干活要知道在什么框架之下干活 14_结构体类型和变量定义及基本操作 15_结构体元素做函数参数pk结构指针做函数参数 16_结构体做函数基本操作 17_结构体做函数内存分配指针 18_结构中套一级指针 19_结构体中套二级...

    ExtAspNet_v2.3.2_dll

    -增加示例(data/tree_select_run.aspx),如何选中当前节点的所有子节点(feedback:wjl_wjl520)。 +TreeNode的属性NodeId被重命名为NodeID,这是ExtAspNet中的一个命名约定。 -同时更名的还有GridColumn的...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    1. 层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS(Information Manage-mentSystem)是其典型代表。 2. 网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -优化Tree节点的NodeId自动生成,减少ViewState占用。 +2009-08-09 v2.0 beta5 +ExtAspNet和Asp.net的提交按钮兼容问题(feedback:千帆)。 -在2009-03-03 v1.3.0曾经提到这个兼容问题,并有这样的规则,如果...

    《计算机操作系统》期末复习指导

    对考试很有帮助的.......... 《计算机操作系统》期末复习指导 第一章 计算机操作系统概述 ...(1)操作系统文件的目录组织是一个树形结构,从根结点到叶子称为文件的全路径名,文件可以由其全路径名唯一确定...

Global site tag (gtag.js) - Google Analytics