据说会此算法的人 才真正是大牛

问题描述

一个集合中无序存放着菜单树那种关系数据对象,现在要求把集合中的对象以菜单树层次结构有序存放

解决方案

解决方案二:
按照菜单树对象定点值排序为一个树即可,就是一个无序整数树结构排序
解决方案三:
packagecom.wanju.project001.zonghe.test;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashSet;importjava.util.Iterator;importjava.util.List;importjava.util.Map.Entry;importjava.util.Set;/***排序124575个数按照先序生成树**@authorgchai**/publicclassTreeTest{Set<Integer>lst=newHashSet<Integer>();publicstaticvoidmain(String[]args){TreeTesttt=newTreeTest();tt.sort();}publicvoidsort(){lst.add(4);lst.add(5);lst.add(2);lst.add(7);lst.add(1);//先序遍历sort(lst);}publicvoidsort(Setset){List<Tree>trees=newArrayList<Tree>();for(Iteratoriterator=set.iterator();iterator.hasNext();){Objectobject=(Object)iterator.next();trees.add(newTree(String.valueOf(object)));}//排序前System.out.println(trees);//如果先序顺序从小到大12457,则(因为有多种组合,所以)结构如下//1//27//45trees=TreeBuildHelper.sortXu(trees);//排序后System.out.println(trees);TreexuTree=TreeBuildHelper.buildTree(trees);}}classTreeBuildHelper{publicstaticTreebuildTree(List<Tree>trees){Treetree=newTree();//for(inti=0;i<trees.size();i++){//}tree=buildRealTree(tree,null,0,trees);returntree;}/***好吧,此处递归我不会**@paramtree*@paramnode*@parami*@paramtrees*@return*/publicstaticvoidbuildRealTree(Treetree,Treenode,inti,List<Tree>trees){if(node==null){tree.setRootNode(trees.get(i));i++;buildRealTree(tree,tree.getRootNode(),i,trees);}if(null!=node&&node.getLeftLeaf()==null){node.setLeftLeaf(trees.get(i));i++;}elseif(null!=node&&node.getRightLeaf()==null){node.setRightLeaf(trees.get(i));i++;}else{buildRealTree(tree,node.getRightLeaf(),i,trees);}}/***直接排序,不必自己写了**@paramtrees*@return*/publicTreegetMinTree(List<Tree>trees){for(inti=0;i<trees.size()-1;i++){}returnnull;}publicTreegetTreeByRootNootName(Stringname,List<Tree>trees){for(inti=0;i<trees.size();i++){if(name.equals(trees.get(i).getRootName())){returntrees.get(i);}}returnnull;}publicstaticList<Tree>sortXu(List<Tree>trees){Collections.sort(trees,newComparator<Tree>(){@Overridepublicintcompare(Treeo1,Treeo2){returno1.getRootName().compareTo(o2.getRootName());}});returntrees;}}classTree{//叶子就是没有子节点的树privatebooleanisLeaf;privatebooleanhasLeaves;privateTreerootNode;privateStringrootName;privateTreeleftLeaf;privateTreerightLeaf;publicTreegetLeftLeaf(){returnleftLeaf;}publicvoidsetLeftLeaf(TreeleftLeaf){this.leftLeaf=leftLeaf;}publicTreegetRightLeaf(){returnrightLeaf;}publicvoidsetRightLeaf(TreerightLeaf){this.rightLeaf=rightLeaf;}publicbooleanisLeaf(){returnisLeaf;}publicvoidsetLeaf(booleanisLeaf){this.isLeaf=isLeaf;}publicbooleanisHasLeaves(){returnhasLeaves;}publicvoidsetHasLeaves(booleanhasLeaves){this.hasLeaves=hasLeaves;}publicTreegetRootNode(){returnrootNode;}publicvoidsetRootNode(TreerootNode){this.rootNode=rootNode;}publicStringgetRootName(){returnrootName;}publicvoidsetRootName(StringrootName){this.rootName=rootName;}publicTree(){}publicTree(StringrootName){this.rootName=rootName;}publicTree(TreerootNode){this.rootNode=rootNode;}privateTreegetLeaves(){returnnull;}@OverridepublicStringtoString(){return"Tree[isLeaf="+isLeaf+",hasLeaves="+hasLeaves+",rootNode="+rootNode+",rootName="+rootName+"]";}}

不知对不对,先写着
解决方案四:
你这个前提是一个简单的集合,放到实际项目中,每一层的节点都有字段来标识节点的序号,用来显示菜单的顺序。而且还要考虑父节点与子节点的关系,子节点集合中的顺序。
解决方案五:
比如根节点A下有A1,A2,A3这3个子节点,A1下面又有A11,A12这2个子节点,A11下面有A111节点,A2下面有A21节点。现在想以A1->A11->A111->A12->A2->A21->A3这种顺序放在集合中
解决方案六:
DFS-深度优先遍历可以参考这个算法
解决方案七:
很简单用一个hashmap和一个tree就搞定了

时间: 2024-11-18 14:46:14

据说会此算法的人 才真正是大牛的相关文章

惊闻诗人汪国真今天去世

中午开电脑,看到新闻说当代著名大诗人汪国真今天凌晨2点去世.很是吃惊!不禁感叹世事如棋,唏嘘不已.   初读汪国真的诗歌,还是在1994年高中一年级的时候.那时候我从所在的乡村中学以年级第二名(全年级初三5个班)的成绩考入所在县城的第一中学(高中).学校附近有一家新华书店,我经常去逛,碰到合适的书,就从生活费里拿出几块钱十几块钱买了.没多久就看到一本>的书,翻了翻,看到里面的诗歌,写的很是不错,就毫不犹豫的买了.买回来后,如饥似渴的读了起来.在那个年代,所在的小县城是山区(大别山革命老区),信息

符合搜索引擎算法的推广才是好推广

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站推广是一个老生常谈的话题, 不同时期出现的形式也是五花八门,多种多样的,然而如今百度公司一系列的变化,百度绿萝算法,石榴算法,不断的出台,一些老站长就稳不住了,大呼如今的推广是越来越难做了.我们知道,百度算法不断的改变,可是总有一些是不会变的,我们抓住了这些要点,找出符合搜索引擎算法的推广,这样的推广才是好的推广方法,下面笔者就简单的介绍

动态规划法求文本串的最优分行问题河海大学考博计算机算法设计与分析真题着急求解中

问题描述 动态规划法求文本串的最优分行问题河海大学考博计算机算法设计与分析真题着急求解中 列表并至少给出4步典型过程,求文本串"Do you like those people who always think of money and cannot remember the past."在列宽为15,惩罚函数为行空余空间的平方(最后一行不计惩罚)时的最优分行方案.不需要给出具体的实现代码.用动态规划算法给出列表

滴滴柳青:算法和数据才是核武器

36氪:impressive.之前我特别看好按需服务产品的原因就是这个,用数字化的平台去解决供需实际生活里的供需问题,算法和规则可以不断优化,如此平台的效率就可以不断提高.我问个比较傻的问题哈,你刚才说订单会做智能匹配,为什么我在手机上打车时,从应用上看到的基本是从近到远一个个推送给我周围的司机呢? 柳青:其实只是手机上看到的如此,在后台要比这个复杂.从乘客的角度,他可能希望自己发出打车指令,以他为圆心由近到远的发给司机,但是司机那边收单时不应该是这样的.从司机的角度看,他更希望的是先给他推送离

人工智能的核心是“算法”,医生才是主角!

在智慧医疗与AI一直都是科技榜样的机器人沃森,备受大家的关注,也是热议的话题.医生是大数据的核心,如果没有专业的医生,一切数据都是起不到专业的价值,也就是说医生+数据才是最佳的拍档.其实,人工智能只有在医生的指导下,才能发挥出最大的治疗效果,人工智能目前在大多数中国医生以及AI医疗领域的专家看来,人工智能最应该扮演的角色,就像医护人员,只是起到一个辅助工作而已,但真正起到开药方,诊断病情的时候才是医生主角上场的时候.医生才是患者的决策人. 到现在人工智能还是处于萌芽期,真正达到一个人机器人负责全

Netflix的独门秘笈?算法还是人?

在今年圣丹斯电影节的开幕式上,和往常一样,有两部电影进行了首映,并获得了记者及影评人的最大关注.第一部电影是<What Happened,Miss Simone?>,一部关于歌手以及人权偶像Nina Simone的纪录片.这部电影由Netflix公司投资,这项投资至少一部分是基于公司搜集的用户信息数据的:搜集的信息包括我们观看什么,什么时候观看,对观看的节目如何评价,甚至我们何时点击回放.第二部首映影片是一部叫做<The Bronze>的喜剧,电影将一位电视明星Melissa Ra

伍兹被曝与1号情妇圣诞结婚传两人是真爱

伍兹(左)与瑞秋-乌琪泰儿(资料拼图) (1/17张) 北京时间9月4日,泰格-伍兹与一号绯闻情妇瑞秋-乌琪泰儿(Rachel Uchitel)之间的关系依旧扑朔迷离,在有些媒体报道说她与伍兹决不可能死灰复燃的时候,八卦杂志<环球>(Globe)又抛出一份惊人的报道:说她将在今年圣诞节之前与伍兹秘密结婚. "这中间存在一些合理因素."一个消息人士说,"如果艾琳没有发现瑞秋,老虎或许仍然处于婚姻状态下,继续背着艾琳,像公猫那样,到处胡搞."这个消息人士甚至

创业公司:什么样的人适合发期权激励?

口述 | 尚伦律师事务所创始合伙人张明若文字整理 | Anna Kiplinna"激励股权"是一个大概念,"期权"是它的一个小概念."激励股权"是一种通过获得公司股权形式给予企业经营者一定的经济权利,使他们能够以股东的身份参与企业决策﹑分享利润﹑承担风险,从而勤勉尽责地为公司长期发展服务的一种激励方法.什么样的人适合发激励股权?我的建议是,哪些人适合成为你的创业伙伴,你就给他发期权.如果说这个岗位,他的价值在某段期间内能够比较准确地量化放大,比如

WPF架构学习总结

预期读者     1. 初学者.     2. 懒得总结的人.:)     3. 想大致了解WPF框架主要类的功能的人. 前言     学习WPF也有段时间了,今天把学到的东西整理一下,主要还是学自MSDN.     下面,我就WPF中最重要的继承线上的几个类列一下,并归纳下它们的功能和使用场景:  Object(托管代码)     首当其冲的,自然是System.Object类了.这里主要想说的是,WPF的大部分代码都是使用托管代码编写,原因是因为CLR的许多不错的特性(如内存管理.错误处理.