在DhtmlXtree中可以用treegetLeafCount(itemId)获取节点下的子节点数,如果你想计算的是根节点下所有的子节点的话,可以先用上面的计算出根节点下的子节点数然后在有循环判断这些子节点中那个有孩子节点然后在根据treegetLeafCount(itemId)计算此节点下的字节点数,依次循环直至最后。
ItemHasChildren(hParent) //判断结点是否有子结点
hItem=GetChildItem(hParent); //获取第一个子结点
hItem=GetNextSiblingItem(hItem)); //获取下一个兄弟结点结点
只能用这三个函数进行循环计数判断,没有简单的办法。当然,你也可以自定义控件增加属性(如果频繁使用的话这个比较推荐,比较这三个函数的效率不是很高)
带不带复选框你都要用递归才能取到全部子节点。
private void GetChildNodes(TreeListNode parentNode, List<TreeListNode> list)
{
if(parentNodeNodesCount > 0)
{
foreach(TreeListNode node in ParentNodeNodes)
{
listAdd(node);
if(nodeNodesCount > 0)
{
GetChildNodes(node, list);
}
}
}
}
计算公式:n0=n2+1,n0是叶子节点的个数,n2是度为2的结点的个数。
在数据结构中,树是一种非线性的数据结构,它由节点和边组成,每个节点可以有零个或多个子节点。树的叶子节点是指没有子节点的节点,也可以称作终端节点或者叶节点。
计算叶子节点的个数通常有两种方法:
递归法:从根节点开始遍历整棵树,对于每个节点,如果它没有子节点,那么就将计数器加一,否则就递归遍历它的每个子节点。
非递归法:使用栈或队列等数据结构来遍历整棵树,对于每个节点,如果它没有子节点,那么就将计数器加一,否则就将它的子节点入队或入栈,继续遍历。
需要注意的是,在计算树的叶子节点时,需要排除空树的情况,即树中没有任何节点的情况。
使用递归算法
f(node){
for(遍历node的所有子节点){
child=当前子节点
if(child为叶子节点){
return
;}
else{
f(child)
}
}
}
//某一节点下的所有子节点
function getChildren(id/节点ID/){
var $tree = $('#tree');
var node = $treetree('find',id);
var childrenNodes = $treetree('getChildren',nodetarget);
return childrenNodes;
}
//某节点的一级节点
function getSubChildren(id){
var $tree = $('#tree');
var node = $treetree('find',id);
var subNodes = [];
$(nodetarget)
next()children()children("divtree-node")each(function(){
subNodespush($treetree('getNode',this));
});
return subNodes;
}
以上就是关于jstree中是否提供了方法判断一个根节点有多少子节点看了参考文档貌似没有。求高手赐教全部的内容,包括:jstree中是否提供了方法判断一个根节点有多少子节点看了参考文档貌似没有。求高手赐教、VC mfc树形控件怎么判断一个根节点下面有几个子节点、DEV TreeList 怎么获取所有子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)