- 浏览: 799846 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
import com.nfschina.iot.iotdroid.model.Node; public class NodeUtils { /** * * @description: 初始化树 * @param nodeList * @return * */ public static Node initNode(HashMap<Object, ? extends Node> nodeList) { Node root = null; // 构造无序的多叉树 Set<?> entrySet = nodeList.entrySet(); for (Iterator<?> it = entrySet.iterator(); it.hasNext();) { @SuppressWarnings("rawtypes") Node node = (Node) ((Map.Entry) it.next()).getValue(); if (node.getParentId() == null || node.getParentId().equals("-1")) { root = node; } else { Node bean = (Node) nodeList.get(node.getParentId()); if (bean.getChildren() == null) { // bean.children=new ArrayList<Node>(); bean.setChildren(new ArrayList<Node>()); } bean.getChildren().add(node); } } // 功能叶子列表 // 构造功能叶子列表 initializeLeafList(root); // 对多叉树进行横向排序 sortChildren(root); return (Node) root; } // 广度优先遍历,对子节点进行横向排序 private static void sortChildren(Node root) { List<Node> children = root.getChildren(); if (children != null && children.size() != 0) { // 对本层节点进行排序 Collections.sort(children, new NodePriorityComparator()); // 对每个节点的下一层节点进行排序 for (Iterator<Node> it = children.iterator(); it.hasNext();) { sortChildren(it.next()); } } } private static List<Node> leafList = new ArrayList<Node>(); // 深度优先先序遍历,构造功能叶子列表 public static void initializeLeafList(Node root) { List<Node> children = root.getChildren(); if (children == null || children.size() == 0) { leafList.add(root); } else { for (Iterator<Node> it = children.iterator(); it.hasNext();) { initializeLeafList(it.next()); } } } public static Node initNode(String[] nodeList) { return NodeUtils.initNode(nodePackager(nodeList,0)); } public static Node initNode(String[] nodeList ,int init_num) { return NodeUtils.initNode(nodePackager(nodeList,init_num)); } public static HashMap<Object, Node> nodePackager(String[] info,int init_num) { HashMap<Object, Node> nodeList = new LinkedHashMap<Object, Node>(0); for (int i = init_num; i < info.length; i++) { Node n=new Node(); String itemArr[] = info[i].split(":"); n.setId(itemArr[0]); n.setName(itemArr[1]); n.setParentId(itemArr[2]); n.setLft(Integer.valueOf(itemArr[3])); n.setRgt(Integer.valueOf(itemArr[4])); nodeList.put(n.getId(), n); } return nodeList; } private static int count=0; private static Node tempNode; private static String id; private static void findNodeByID(Node root,String id){ count++; for(Node node:root.getChildren()){ if(node.getId().equals(id)){ System.out.print("find it:" + id + " the count is " + count); tempNode=node; break; }else if(node.getChildren()==null || 0==node.getChildren().size()){ continue; }else { findNodeByID(node,id); } } } /** * * @description: 返回所有叶子 * @return * */ private static List<Node> leafNode; public static List<Node> getAllLeaf(Node root){ leafNode=new ArrayList<Node>(); getLeaf(root); return leafNode; } private static void getLeaf(Node root){ count++; for(Node node:root.getChildren()){ if(node.getChildren()==null || 0==node.getChildren().size()){ leafNode.add(node); continue; }else { getLeaf(node); } } } /** * 由Node获取深度链 */ private static List<Node> deapNodeList; public static List<Node> getDeapLink(Node root, Node node) { putTree2List(root); deapNodeList = new ArrayList<Node>(); getDeap(node); deapNodeList.add(root); return deapNodeList; } private static void getDeap(Node tempNode) { for (Node node : allList) { if (node.getId().equals(tempNode.getParentId())) { deapNodeList.add(tempNode); getDeap(node); } } } /** * * @description: 多叉树列表化 * @param root * */ static List<Node> allList; private static void putTree2List(Node root) { if (null == allList) allList = new ArrayList<Node>(); allList.add(root); for (Node node : root.getChildren()) { if (node.getChildren() != null && 0 != node.getChildren().size()) {// 不是叶子 putTree2List(node); } else allList.add(node); } } }
public class Node { private String id; private String name; private String parentId; private List<Node> children; private Integer lft; private Integer rgt; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getParentId() { return parentId; } public void setParentId(String parentId) { this.parentId = parentId; } public List<Node> getChildren() { return children; } public void setChildren(ArrayList<Node> arrayList) { this.children = arrayList; } public Integer getLft() { return lft; } public void setLft(Integer lft) { this.lft = lft; } public Integer getRgt() { return rgt; } public void setRgt(Integer rgt) { this.rgt = rgt; } }
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.List; public class NODEtest { public static void main(String[] args) { // id:text:pid:lid:rid String info = "1," + "1:化肥:-1:1:30," + "2:有机肥:1:2:9," + "3:无机肥:1:10:15," + "4:其他肥:1:16:27," + "5:化肥4:1:28:29," + "6:猪粪1:2:3:4," + "7:猪粪2:2:5:6," + "8:猪粪3:2:7:8," + "9:氮肥1:3:11:12," + "10:氮肥2:3:14:15," + "11:其他肥料1:4:17:18," + "12:其他肥料2:4:19:20," + "13:其他肥料3:4:21:22," + "15:NEW:14:24:25," + "14:其他肥料4:4:23:26"; String[] infoArr = info.split(","); HashMap<Object, Park> nodeList = new LinkedHashMap<Object, Park>(0); for (int i = 1; i < infoArr.length; i++) { Park n = new Park(); String itemArr[] = infoArr[i].split(":"); // n.id=itemArr[0]; // n.text=itemArr[1]; // n.parentId=itemArr[2]; // n.lft=Integer.valueOf(itemArr[3]); // n.rgt=Integer.valueOf(itemArr[4]); n.setII("i= " + i); n.setId(itemArr[0]); n.setName(itemArr[1]); n.setParentId(itemArr[2]); n.setLft(Integer.valueOf(itemArr[3])); n.setRgt(Integer.valueOf(itemArr[4])); nodeList.put(n.getId(), n); } Node node = NodeUtils.initNode(nodeList); String s = ((Park) node).getII(); // NodeUtils sss = new NodeUtils(); // Node node3 = sss.findNodeByID(node, String.valueOf(6)); NodeUtils.getAllLeaf(node).size(); // System.out.println(NodeUtils.getAllLeaf(node).size()); List<Node> list=NodeUtils.getDeapLink(node, NodeUtils.findNodeByID(node, "15")); for (int i = 0; i < list.size(); i++) { // Node node2 = sss.findNodeByID(node, String.valueOf(i)); // System.out.println(node2.getName()); System.out.print(list.get(i).getId()+", "); } System.out.println(); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i).getName()+", "); } } }
much time!!
发表评论
-
SpringMVC入门
2015-07-02 18:23 736目录 介绍 实例 总结 参考资料 介绍 Sp ... -
java线程中yield(),sleep(),wait()区别详解
2014-09-03 13:23 6251、sleep() 使当前线程(即调用该方法的线程)暂停执 ... -
线程方法 joine
2014-09-02 11:51 677Example1: Java代码 ... -
Java transient关键字
2014-06-24 15:46 462Volatile修饰的成员变量在每次被线程访问时,都强迫从主内 ... -
Android EditText不弹出输入法焦点问题的总结
2014-02-27 01:24 882同样的代码,碰到有EditText控件的界面时有的机 ... -
GIT查看、删除、重命名远程分支和TAG
2014-02-20 09:47 1094这篇文章记录我在使用git的过程中碰到远程分支和tag的相关 ... -
Android应用程序组件Content Provider应用实例
2014-02-18 15:56 834上文简要介绍了Android应用程序组件Content P ... -
用Java集合中的Collections.sort方法对list排序的两种方法
2014-02-14 16:08 1058java List 排序 Collections.sort ... -
Java集合容器总结
2014-02-14 12:53 7332010-08-12 12:36:44| 分类: ... -
Git 常用命令详解(二)转
2014-02-14 11:34 646Git 是一个很强大的分 ... -
java 之 中文转拼音库 pinyin4j 转
2014-02-14 10:55 790Pinyin4j是一个流行的Java库,支持中文字符和拼音之 ... -
ant配置build.xml 指定多个classpath 编译多个src目录
2014-01-22 23:24 1620因为项目需求,需要自 ... -
[Andriod开发] 启动程序时不显示主Activity的方法
2013-08-30 03:43 1021需求场景: 在主画面上点击程序图标,启动程序时,不显示主A ... -
JSON for java入门总结
2013-06-26 16:58 738一、JSON介绍 JSON(JavaScript O ... -
Linux下显示tomcat控制台
2013-06-21 15:54 1040Linux下显示tomcat控制台 $TOMCAT_ ... -
java 字符串,字符数组,list间的转化
2013-06-19 16:44 9661.关于java.lang.string.split ... -
android JNI调用 - char*与jstring相互转换
2013-03-07 13:54 1830在使用jni调用时经常遇到数据类型转换问题,以下是char* ... -
定义函数数组
2012-10-26 11:29 751interface FunctionArrayInter ... -
JAVA对double或者float的浮点数精度计算控制方法
2012-10-23 10:31 1068★★★ 本篇为原创,需要引用转载的朋友请注明:《 http:/ ... -
Android中的sp和wp指针
2012-10-12 13:20 1040经常会在android的framework代码中发现sp ...
相关推荐
基于Python的多叉树遍历算法
针对无线射频识别技术系统中的标签碰撞问题,采用对碰撞位锁定的方法,提出了一种后退锁位式自适应多叉树防碰撞算法。在自适应多叉树防碰撞算法的基础上,通过碰撞锁位指令判断标签碰撞信息并将碰撞位信息提出来,...
java多叉树的实现:节点集合生成多叉树,单个节点添加到多叉树,深度遍历,广度遍历
新概念智能树形菜单--利用加权多叉树结合
针对射频识别(radio frequency identification,RFID)系统中出现的标签碰撞问题,提出了一种锁位式自调整多叉树防碰撞算法。新算法采用自调整防碰撞算法的基本原理,利用曼彻斯特编码的特点,发送锁位指令确定碰撞...
哈夫曼编码是数据压缩领域中最著名的编码方式之一.它通过对象频率出现的不等性.构造最优编码.达到减小文件大小的目的。
多叉树的实现,本算法采用5比较合适,纵向遍历靠递归调用
决策树 id3算法实现多叉树树形图显示,使用matlab编程实现多叉树生成结构体,再对结构体进行处理,生成树形图。
针对无线射频识别技术系统中的标签碰撞问题,采用对碰撞位锁定的方法,提出了一种后退锁位式自适应多叉树防碰撞算法。在自适应多叉树防碰撞算法的基础上,通过碰撞锁位指令判断标签碰撞信息并将碰撞位信息提出来,结合...
提出将动态多叉树算法应用于大气环境质量评价系统中,实现知识增值和继承。当系统扩充时,只需对增加的模式类别或训练样本构建新的分类器,其余的分类器可保持不变,从而很好地解决现有评价识别系统在学时新知识会...
本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大家供大家参考,具体如下: 演示之前的准备工作 演示项目的文件结构: index.html jsonData.js recurrenceTree.js noRecurrenceTree.js ...
本文实例讲述了Python实现的多叉树寻找最短路径算法。分享给大家供大家参考,具体如下: 多叉树的最短路径: 思想: 传入start 和 end 两个 目标值 1 找到从根节点到目标节点的路径 2 从所在路径,寻找最近的...
MT-CAI用一个多叉树防碰撞算法来发现不可调解的碰撞,可以高效地发现所有的克隆标签。从性能分析和仿真实验可以看到,MT-CAI不仅能够检测出所有克隆标签,而且其执行时间远小于GREAT的执行时间。MT-CAI方法在检测...
1 package tree; 2 3 import java.util.List; 4 import java.util.ArrayList; 5 import java.io.Serializable; 6 7 public class TreeNode implements Serializable { 8 private int parentId...
改进型自适应多叉树防碰撞算法研究
为克服传统二叉树防碰撞算法搜索效率低的缺点,提出了一种基于启发式函数的自适应多叉树防碰撞算法。新算法通过定义和计算启发式函数,有效地利用碰撞比特信息来估计节点内待识别标签的数量。新算法根据节点内的标签...
NULL 博文链接:https://zw7534313.iteye.com/blog/473446
针对射频识别(radio frequency identification,RFID)系统中出现的标签碰撞问题,提出了一种锁位式自调整多叉树防碰撞算法。新算法采用自调整防碰撞算法的基本原理,利用曼彻斯特编码特点,发送锁位指令确定碰撞位...
为了更好地解决这一问题,提出了基于多叉树搜索的防碰撞算法。该算法根据碰撞位的不同来动态选择二叉树搜索和四叉树搜索,并引用堆栈存储查询命令以避免重复搜索和冗余搜索,使得在大批量标签的情况下,系统吞吐率大...