层序遍历在ExtJs的TreePanel中的应用
来源:互联网 发布:seo课程 编辑:程序博客网 时间:2024/05/16 09:29
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://phinecos.blog.51cto.com/1941821/368959
var currentRootNode = null;//当前选择的根节点 function NodeClass() { //定义一个节点类 var nodeValue = null; var nextNode = null;//下一个节点 } function InitQueue(queue) { //初始化一个队列 queue = new NodeClass();//头节点为空 return queue; } function Empty(queue) { //判断一个队列为空 var returnValue = false; if(queue.nextNode == null) { returnValue = true; } return returnValue; } function EnQueue(queue,x) { //入队操作 var returnValue = queue; var currentNode = queue;//头节点 while(currentNode.nextNode != null) {//current 一直到来到最后一个元素 currentNodecurrentNode = currentNode.nextNode; // } var tempNode = new NodeClass(); //生成一个新的元素,并且值为X tempNode.nodeValue = x; currentNode.nextNode = tempNode; //插入到最后 return returnValue; } function DeQueue(queue) { //出队操作 var returnValue = null; if(queue.nextNode != null) { //如果队列非空 if(queue.nextNode.nextNode == null) { //如果是最后一个元素(即使队头又是队尾,只有一个元素) returnValue = queue.nextNode.nodeValue; //取得该元素的值 queue.nextNode = null;//将头指针的queue的nextNode设置为NULL } else { returnValue = queue.nextNode.nodeValue; //取得该元素的值 queuequeue.nextNode = queue.nextNode.nextNode; //将第二个元素的指针赋给queue的nextNode,相当于删除了第一个元素 } } return returnValue; //返回被删除的第一个元素的值 } function GetHead(queue) { //获得队头元素的值 return queue.nextNode.nodeValue; } function Clear(queue) { //清空一个队列 queue.nextNode = null; queue.nodeValue = null; } function Current_Size(queue) { //获得当前队列的大小 var returnValue = 0; var currentNode = queue.nextNode;//头结点 while(currentNode != null) { //从头往尾计算 returnValue++; currentNodecurrentNode = currentNode.nextNode; //指向下一个元素 } return returnValue; //返回大小 } function findFirstCheafNode() { var childNodes = null; var targetNode = null;//待查找的目标叶子节点 var queue = null;//辅助队列 queue = InitQueue(queue);//初始化队列 queue = EnQueue(queue,currentRootNode);//根节点入队列 while (!Empty(queue)) {//只要队列不空 node = DeQueue(queue);//出队列 if (node.hasChildNodes()) {//非叶子节点 childNodes = node.childNodes; //其孩子节点从左到右依次入队列 for (var i = 0,len = childNodes.length; i < len ; ++i) { queue = EnQueue(queue,childNodes[i]); } } else {//找到第一个叶子节点 return node; } } } Ext.onReady(function() { var tree = new Ext.tree.TreePanel({ el: 'treeDiv', useArrows: true, autoScroll: true, animate: true, enableDD: true, containerScroll: true, border: false, // auto create TreeLoader loader: new Ext.tree.TreeLoader({dataUrl:'Level1.txt'}) }); var rootID = '0'; var rootnode = new Ext.tree.AsyncTreeNode({ id : rootID, text : '铁道部', draggable : false,// 根节点不容许拖动 expanded : false }); // 为tree设置根节点 tree.setRootNode(rootnode); tree.render(); tree.on('click',function(node,event) {//查询树的第一个叶子节点 currentRootNode = node; var targetNode = findFirstCheafNode(); Ext.MessageBox.alert("info","当前根节点是: "+currentRootNode.text + " 它下面的第一个叶子节点是: " + targetNode.text); }); }); var childNodes = null; var targetNode = null;//待查找的目标叶子节点 var queue = null;//辅助队列 queue = InitQueue(queue);//初始化队列 queue = EnQueue(queue,currentRootNode);//根节点入队列 while (!Empty(queue)) {//只要队列不空 node = DeQueue(queue);//出队列 if (node.hasChildNodes()) {//非叶子节点 childNodes = node.childNodes; //其孩子节点从左到右依次入队列 for (var i = 0,len = childNodes.length; i < len ; ++i) { queue = EnQueue(queue,childNodes[i]); } } else {//找到第一个叶子节点 return node; } } } Ext.onReady(function() { var tree = new Ext.tree.TreePanel({ el: 'treeDiv', useArrows: true, autoScroll: true, animate: true, enableDD: true, containerScroll: true, border: false, // auto create TreeLoader loader: new Ext.tree.TreeLoader({dataUrl:'Level1.txt'}) }); var rootID = '0'; var rootnode = new Ext.tree.AsyncTreeNode({ id : rootID, text : '铁道部', draggable : false,// 根节点不容许拖动 expanded : false }); // 为tree设置根节点 tree.setRootNode(rootnode); tree.render(); tree.on('click',function(node,event) {//查询树的第一个叶子节点 currentRootNode = node; var targetNode = findFirstCheafNode(); alert("当前根节点是: "+currentRootNode.text + " 它下面的第一个叶子节点是: " + targetNode.text); }); });
- 层序遍历在ExtJs的TreePanel中的应用
- 层序遍历在ExtJs的TreePanel中的应用
- 层序遍历在ExtJs的TreePanel中的应用
- Extjs TreePanel的应用
- extjs 遍历TreePanel中选中的节点
- Extjs的TreePanel
- extjs 的treepanel设置
- ExtJS 的TreePanel
- ExtJS中TreePanel的使用
- 几分钟搞定队数据结构在非递归层序遍历算法中的应用
- extjs treepanel
- 解决 ExtJS TreePanel 的 iconCls 设置问题
- 编写Extjs treepanel的节点展开事件
- css修改ExtJS:TreePanel的小图标
- Extjs 4.0.7 TreePanel的使用
- Extjs中 关于treePanel的demo实例
- ExtJS学习1--treepanel的几个问题,导盲贴
- 解决ExtJS TreePanel 的 iconCls设置问题
- Delphi 远程控制(1)
- OMXCodec源码分析---part2
- 第七周改错
- java se List转为数组Array
- Java关键字this、super使用总结
- 层序遍历在ExtJs的TreePanel中的应用
- 第7周:阅读程序
- 工作笔记:mysql 基本操作
- Laucher 九宫格风格 长按移动删除 宫格
- 静态数据成员的初始化 程序改错
- POJ2513《Colored Sticks》方法:字典树+欧拉图+并查集
- 直击传智播客成都中心4月11日就业班开班典礼
- dataTables-使用中遇到的问题
- Boost智能指针——weak_ptr