Articles of 树

如何计算二进制search树中的比较?

我有一个类的二进制节点,二叉树和二叉search树,它们包含您的基本树函数,如查找节点,添加节点,删除节点,获取高度,getnumberof节点,以及其他类似的。 我试图添加一个新的函数来计算在树中查找某个特定节点的比较次数,但是我迷惑了自己。 我能做的最好的是检查节点是否在树中,但我无法弄清楚如何使计数器与每个比较增量。 我试图做的方法只是很难翻译成我现在的代码。 我只是不认为我这样做是正确的。 如果有人能帮我解决这个问题,我真的会赞赏它。 int counter = 0; template<class ItemType> ItemType BinarySearchTree<ItemType>::IsInTree(BinaryNode<ItemType>* BinTreePtr, const ItemType& item) { BinaryNode<ItemType>* tmp = BinTreePtr; counter++; if (tmp == NULL) { printf("Number of comparisons: \n", counter); return 1; } else { counter++; if (&tmp->getItem == item) { printf("Number of comparisons: \n", counter); return 0; } else { […]

从node.js中的mongoDB数据生成JSON树

有很多像这样的问题,但不幸的是我没有find任何适合我的情况。 最近的是从MongoDB Node.Js创build一个JSON树,但它仍然没有按预期工作。 或者,也许我的头不能包装这个问题… 我有架构,我的问题的关键组件如下所示: var userSchema = new Schema({ _id: {type: Number}, children: [{type: Number, ref: 'User'}] )}; 每个用户可能有三个孩子的用户,所以它可以无限深入。 幸运的是,我必须涵盖两种情况 – 从特定用户构buildJSON树最多3个嵌套 计算来自特定根的10个嵌套的数据。 我尝试在我的express.js api中写这样的recursion函数: api.get('/user/tree/:user_id', function (req, res) { var user_id = req.params.user_id; var depth = 0; var root = {}; function walker(parent) { if (depth >= 3) { return res.send('whole data, not […]

创buildNPM链接实用程序 – 从下到上跟踪依赖关系

我正在创build一个NPM链接实用程序 我有一个软件包取决于大约7或8个本地开发的软件包。 我使用NPM链接将它们链接在一起。 这是目前手动,并已成为乏味,想用自动化实用程序。 我相信最好的做法是开始链接没有依赖关系的包,然后工作到最依赖的包。 看起来像这样: A (my main NPM project) / \ \ / \ \ BCH __ / \ / \ \ / \ / \ \ DEIJK \ / \ / \ / F 假设 – 我应该从树的底部开始,向上工作。 我可以使用哪些数据结构/algorithm来轻松实现? 考虑到上面的树, 有效的代码将如下所示: # start with F and work upwards cd F && npm link […]

在Javascript中recursion树插入

我试着用树节点在JavaScript中recursion地将插入写入到树型数据结构中,但是不要使它工作。 所以我的问题是,如何处理这个问题。 这是我的数据: [ { id: 'a', children: [ 'b', 'c' ] }, { id: 'b', children: [ '' ] }, { id: 'c', children: [ 'b', 'd' ] }, { id: 'd', children: [ 'b' ] } ] 我想让它出现在如下的树中: a /\ bc /\ bd \ b 编辑:添加代码 我以为我可以做这样的事情,但这是行不通的,当然因为嵌套的forEach有很高的复杂性: var Node = require("tree-node"); var testarray […]

如何使用Javascript获得所有path到树叶?

如何使用Javascript获得所有path到树叶? 我试图使用arboreal包,但我可以简单地parsing它到一个数组或类似的东西,如果有帮助。 我的数据如下所示: 1 / \ 2 3 / / \ 4 6 5 / 7 我想得到这样的输出: [1,2,4,7],[1,3,6],[1,3,5]

什么方法可以用于JS内的依赖关系的遍历树?

可能是自从我不确定如何expression它以来最糟糕的标题,但希望我能在这里更好地解释。 请注意,在这个问题上会出现错误的术语,我对此表示歉意。 我想尝试在节点中构build一个可以遍历依赖树的JS应用程序。 通常用jQuery遍历一棵正常的树会很好,但我认为这比这更复杂一点。 我以这个图像为例: http://img.nodejscore.com/javascript/MQHWBDk.png (从以前的图像更新,因为在一些浏览器,它redirect到一个较小的分辨率) 我希望能够select一个节点,并让应用程序输出到该节点的最有效的路由,包括所有的依赖关系。 例如,如果我想到屏蔽技术1,它会输出:研究实验室1 – >研究实验室2 – >研究实验室3 – >研究实验室4 – >研究实验室5 – >研究实验室6 – >能源技术1 – >能源技术2 – >能源技术3 – >屏蔽技术1 在这个例子中,研究实验室是优先考虑的,但只要遵循两条途径,任何顺序都可以。 到目前为止,我还没有真正知道如何处理它。 如果它是一个没有多重依赖关系的简单的树结构,我只是将它设置为一棵树。 如果你有一个想法,请随意提取较小的例子。

replace树结构中的根

我有以下树让我们称之为Tree One 。 1 / \ / \ 2 3 / / 4 现在我想用2replace根节点。然后上面的树会变成这样的东西。 让我们称之为Tree Two 2 / \ / \ 4 1 \ \ 3 我如何才能实现如上所述的数组input? UPDATE 我已经尝试与Linkedlist。 哪一个在下面,但它不适用于上面的input(即数组)。 function replaceRootNode(tree, x) { var y = x.left; x.left = y.right; if (y.right) { y.right.parent = x; } y.parent = x.parent; if (!x.parent) { tree.root […]

使用callback完成树行走后执行一个函数

我有一个简单的树,id是Mongo集合的关键。 我正在使用一个名为treewalker的节点库。 当我走树的每个节点时,我试图查找名称(使用mongoose),并简单地将其附加到当前节点。 如果我不做callback查找节点名称,只是使用一些固定值,我得到我期待的价值。 让我用代码来说明: 这是我的树: { "categoryTree": [ { "categoryId": "1", "children": [ { "categoryId": "2", "children": [ { "categoryId": "3", "children": [] }, { "categoryId": "4", "children": [] } ] }, { "categoryId": "5", "children": [] }, { "categoryId": "6", "children": [] } ] }, { "categoryId": "7", "children": [ { "categoryId": "8", […]

如何做Redis树并优化它+ Node.js

我需要caching将由几个node.js工作人员使用的数据。 下面是这个数据的层次结构,它是三层深的: 每个类别都有相同的子类别,并且都是固定的大小。 每个“数据”包含4个字段,其中一个是唯一的ID。 会有相当多的“数据”插入和删除。 在Redis中实现这样的数据库的最好方法是什么? 哈希集cat + subcat,因为我有他们的固定数量,哈希集还为每个字段具有该唯一ID的数据becouse? 谢谢!

在JavaScript中什么树距离库?

我正在寻找一个图书馆,实施任何似乎有据可查的*策略计算树木之间的距离。 例如,图书馆应该显示这两棵树 aa / \ / \ bcbc \ d 比这两个更“相似” ax / \ / \ bcyz 我使用node.js,所以一个节点的实现将是很好的。 我知道“类似”看起来有点模棱两可,但不pipe用什么策略来计算这些树之间的差异,我假设你总是会得到一些最终的“分数”,如果表示一个编辑距离在第二种情况下比在第一种情况下更大。 什么node.js库做这样的事情? 编辑:在我的具体情况的一些增加的信息:这是为了检测HTML文档中的重复树结构,所以更专门针对这个问题的库会更好。 编辑2:即使是一个levenshtein距离库node.js会帮助,所以我可以至less比较树的指纹文本。 *我是这个领域的新手,但是scribd.com讨论了Lu和Tai使用的策略。