java递归螺旋输出_Java递归如何正确输出树形菜单

本文实例为大家分享了java递归输出树形菜单的具体代码,供大家参考,具体内容如下

首先我们要建立树节点的类:

package com.tree;

public class node {

private integer id;

private integer parentid;

private string name;

private string link;

public integer getid() {

return id;

}

public void setid(integer id) {

this.id = id;

}

public integer getparentid() {

return parentid;

}

public void setparentid(integer parentid) {

this.parentid = parentid;

}

public string getname() {

return name;

}

public void setname(string name) {

this.name = name;

}

public string getlink() {

return link;

}

public void setlink(string link) {

this.link = link;

}

}

输出树形菜单类:

package com.tree;

import java.util.arraylist;

import java.util.list;

public class tree {

private stringbuffer html = new stringbuffer();

private list nodes;

public tree(list nodes){

this.nodes = nodes;

}

public string buildtree(){

html.append("

  • ");

for (node node : nodes) {

integer id = node.getid();

if (node.getparentid() == null) {

html.append("\r\n

" + node.getname()+ "");

build(node);

}

}

html.append("\r\n

");

return html.tostring();

}

private void build(node node){

list children = getchildren(node);

if (!children.isempty()) {

html.append("\r\n

  • ");

for (node child : children) {

integer id = child.getid();

html.append("\r\n

" + child.getname()+ "");

build(child);

}

html.append("\r\n

");

}

}

private list getchildren(node node){

list children = new arraylist();

integer id = node.getid();

for (node child : nodes) {

if (id.equals(child.getparentid())) {

children.add(child);

}

}

return children;

}

}

然后我们来测试一下:

import java.util.arraylist;

import java.util.list;

import cn.com.tree.node;

import cn.com.tree.tree;

public class test {

/**

* @param args

*/

public static void main(string[] args) {

list nodes = new arraylist();

node node1 = new node();

node1.setid(1);

node1.setname("node1");

node1.setparentid(null);

node1.setlink(null);

nodes.add(node1);

node node11 = new node();

node11.setid(11);

node11.setname("node11");

node11.setparentid(1);

node11.setlink(null);

nodes.add(node11);

node node111 = new node();

node111.setid(111);

node111.setname("node111");

node111.setparentid(11);

node111.setlink(null);

nodes.add(node111);

node node12 = new node();

node12.setid(12);

node12.setname("node12");

node12.setparentid(1);

node12.setlink(null);

nodes.add(node12);

node node2 = new node();

node2.setid(2);

node2.setname("node2");

node2.setparentid(null);

node2.setlink(null);

nodes.add(node2);

node node21 = new node();

node21.setid(21);

node21.setname("node21");

node21.setparentid(2);

node21.setlink(null);

nodes.add(node21);

node node3 = new node();

node3.setid(3);

node3.setname("node3");

node3.setparentid(null);

node3.setlink(null);

nodes.add(node3);

tree tree = new tree(nodes);

system.out.println(tree.buildtree());

}

}

输出的结果:

  • node1
    • node11
      • node111
    • node12
  • node2
    • node21
  • node3

浏览器效果:

ab2ea0caf2f066bb18b1ad0581fe6d04.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值