`
张玉龙
  • 浏览: 743817 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

开通课程: 查看状态 操作里的开通课程 开通后完成叶子节点 的操作 显示变为 两个横线--)

 
阅读更多


/*function :找到整个树并找到已购的课程
	 * @param:
	 * 
	 */
	private void treeBuy(Integer cid, Integer level,boolean[] aryIsLastNode, boolean isBuyFlag) {
		int index = 0;
		List<Course> list = (List<Course>) coursedao.findByPid(cid);

		for (Course t : list) {
			/*
			 * System.out.println("-----list:" + list.toString());
			 * System.out.println("-----t:" + t);
			 * System.out.println("-----list.size():" + list.size());
			 */
      
			String symbol = "";
			String symbolf = "";
			index++;
            
			// System.out.println("-----index:" + index);
			
				// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定
				//System.out.println("-----level:" + level);
				for (int lev = 0; lev < level; lev++) {
					if(aryIsLastNode[lev]==false)
					symbolf += "│";
					else
					symbolf += "   ";
				}
				// 是否为最后一个节点
				if (index == list.size()) {
					symbol = "└";

				} else {
					symbol = "├";

				}			String cname = symbolf + symbol + t.getCname();
			t.setCname(cname);
		//	System.out.println("-----t:" + t.getCname());
			boolean bIsBuy = false;
			if (t.getLeaf() == 0) {

			      //判断一下他的上级是否已经是被购买了
				if (!isBuyFlag)
				{
					bIsBuy = stdCsd.findStdCourseByScId(mStdId, t.getCid());
					CreateCourseBuyRec(t, bIsBuy, bIsBuy);
				}
				else
				{
					CreateCourseBuyRec(t,true, false);
				}
				
			} else {

				  //判断一下他的上级是否已经是被购买了
				if (!isBuyFlag)
				{
					bIsBuy = stdCsd.findStdCourseByScId(mStdId, t.getCid());
					CreateCourseBuyRec(t, bIsBuy, bIsBuy);
				}
				else
				{
					CreateCourseBuyRec(t,true, false);
				}
				t.setLevel(level + 1);
				if(index==list.size()){
					aryIsLastNode[level]=true;
				}
				else{
					aryIsLastNode[level]=false;
				}
				treeBuy(t.getCid(), t.getLevel(),aryIsLastNode,bIsBuy);
			}
		}

	}
	
	public void CreateCourseBuyRec(Course cs, boolean isBuy, boolean isRoot)
	{
		CourseIsBuy ss = new CourseIsBuy();
		ss.setCs(cs);
		ss.setBuy(isBuy);
		ss.setIsRootCourse(isRoot);
		ListBuyTree.add(ss);
		
	}
    public List<CourseIsBuy> findTreeForBuy(int stdId)
    {
    	mStdId = stdId;
		l.clear();
		List<Course> list = (List<Course>) coursedao.findByPid(0);
		for (Course t : list) {
			if (t.getLeaf() != 0) {
				boolean bIsBuy = stdCsd.findStdCourseByScId(stdId, t.getCid());
				CreateCourseBuyRec(t, bIsBuy, bIsBuy);
				 
				aryNodeStatus[0]=true;
				this.treeBuy(t.getCid(), 0, aryNodeStatus, bIsBuy);
			} else {
				boolean bIsBuy = stdCsd.findStdCourseByScId(stdId, t.getCid());
				CreateCourseBuyRec(t, bIsBuy, false);
			}
		}
		return ListBuyTree;
    }
















分享到:
评论

相关推荐

    二叉树求叶子节点非递归

    在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树的应用广泛,包括文件系统、编译器设计、搜索算法等领域。本篇文章将重点讲解如何非递归地求解...

    C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法

    本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...

    Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回

    Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回 支持内容: 已完成节点高亮显示、当前执行...支持一个节点多条流出线,包括通过、不通过、驳回、退回,按照已执行操作正确显示高亮流程线

    二叉链表叶子节点的输出

    这里定义了一个名为`BiTNode`的结构体类型,它包含三个成员:一个字符型变量`data`用于存储节点的数据,两个指向`BiTNode`类型的指针`LChild`和`RChild`分别表示该节点的左子节点和右子节点。同时,定义了一个指向`...

    寻找树中两叶子节点之间的最长路径

    在二叉树问题中,寻找两个叶子节点之间的最长路径是一个典型的图论问题,可以转换为在树中找到具有最大权重的路径。这个问题的关键在于非递归的解决方案,它通常涉及广度优先搜索(BFS)或深度优先搜索(DFS)算法。...

    中兴5G网管操作方法.docx

    #### 一、查看基站告警、基站状态、设备型号、端口速率及反开操作 ##### 1. 基站告警检查 - **路径**: `FM` - `当前告警` - `告警监控` - **注意事项**: - 当检查某个站点的STCP状态时,即使存在一两条故障记录,...

    编译原理ε-closure(I)的程序实现(Java实现)课程设计报告.docx

    《编译原理ε-closure(I)的程序实现》课程设计报告主要涵盖了如何利用Java编程语言实现有限自动机(NFA)的空闭包ε-closure(I)计算。该设计的目标是处理用户输入的任意有限自动机,针对任意状态子集I,输出其空...

    算法与数据结构课程设计报告B-trees的实现及分析

    - 如果插入后某个节点包含超过M-1个键,该节点将分裂成两个节点,并将中间键提升到父节点。这个过程可能会一直持续到根节点,甚至可能导致创建新的根节点。 - **删除操作**: - 删除操作相对复杂,因为需要处理...

    C++如何实现二叉树叶子节点个数计算 (2).docx

    在C++编程中,二叉树是一种常见的数据结构,它由节点构成,每个节点可以有零个、一个或两个子节点。在这个问题中,我们关注的是如何计算二叉树中的叶子节点数量。叶子节点是指没有子节点(既无左子节点也无右子节点...

    Ext用户扩展控件-------支持树上多个节点和叶子的拖动

    "Ext用户扩展控件-------支持树上多个节点和叶子的拖动"是EXT JS中的一个高级特性,它增强了EXT JS的树形控件(TreePanel),允许用户通过拖放操作在树结构中移动多个节点和叶子。这一功能对于数据组织和展示特别...

    ztree实现左右两棵树的节点移动

    本文将深入探讨如何使用ZTree实现左右两棵树之间的节点移动,包括节点的添加、删除以及同步更新的操作。 首先,ZTree是基于jQuery的插件,它的核心功能包括节点的增删改查、拖拽排序、多选、权限控制等。在实际应用...

    动力节点-java教程-Spring4

    教程名称:动力节点-java教程-Spring4 课程简介:动力节点推出的本套Java视频教程内容主要讲解的Spring版本号为4.2.1,是目前Spring比较新的一个版本,与之前的Spring3相比,有一些技术上的更新,内容涵盖了实际...

    操作系统课程设计-文件管理系统

    操作系统课程设计中的文件管理系统是一个关键的实践项目,它模拟了一个基于树型目录结构的文件系统。这个设计的主要目标是让学生理解和实现类似Unix/Linux系统中文件和目录的组织方式。在这个系统中,文件和目录被...

    数据结构 课程设计

    - 构建赫夫曼树,每次选取两个权值最小的节点作为新的节点的孩子,并更新权值。 - 为每个叶子节点分配赫夫曼编码。 - 编码测试与验证。 #### 题目八:折半查找 - **知识点**: - 折半查找的基本原理(又称二分...

    2-3树的插于及删除操作源代码

    2. **2-节点处理**:如果插入后父节点变为拥有两个孩子的节点(2-节点),则可以直接将新节点添加为子节点。 3. **3-节点处理**:如果插入位置的父节点已经是3-节点(拥有三个孩子),那么需要进行分裂操作。将3-...

    Java数据结构和算法 清晰版

    - 双向链表:每个节点有两个指针,分别指向其前驱和后继节点。 - 循环链表:最后一个节点指向第一个节点,形成闭环。 #### 四、递归 **递归**: - **定义**:函数直接或间接地调用自身的方式。 - **关键要素**:...

    ztree使用介绍

    - `keepLeaf`: 是否保持叶子节点状态。 - `keepParent`: 是否保持父节点状态。 - `editable`: 是否允许编辑节点名称。 - `edit_removeBtn` 和 `edit_renameBtn`: 编辑时显示的按钮。 4. **节点数据格式**: - ...

    合肥工业大学操作系统课程设计报告.doc

    在操作系统中,进程死锁是多线程并发执行时可能出现的一种状态,其中两个或多个进程互相等待对方释放资源,导致无法继续执行。死锁的检测是操作系统管理的重要部分,而资源分配图是一种常用的方法来分析和理解死锁...

    《数据结构课程设计》二叉树基本操作实验程序(10种基本操作)

    在这个《数据结构课程设计》项目中,我们专注于二叉树的基本操作,通过两个源文件(file1.cpp 和 file2.cpp)以及一个头文件(head.h)实现了一系列的二叉树操作。以下是这些操作的详细说明: 1. **创建二叉树**:...

    基于JAVA开发的二叉树课程设计与实现

    - 二叉树定义:二叉树是每个节点最多有两个子节点的数据结构,通常分为左子节点和右子节点。 - 二叉树类型:满二叉树、完全二叉树、平衡二叉树(如AVL树、红黑树)等。 - 特殊操作:插入、删除、查找等操作在...

Global site tag (gtag.js) - Google Analytics