java树状图的实现逻辑,语言学树状图例子

本文目录一览:

急求:java/jsp 如何实现横向树形结构的显示(如图)?

你是要动态现实目录的层次结构吗?

我只能采用递归帮你显示目录,不能实现树状显示

package com.lx;

import java.io.File;

public class FileList {

public static void main(String[] args) {

File f = new File(“e:/资料”);

System.out.println(f.getName());

tree(f, 1);

}

private static void tree(File f, int level) {

String preStr = “”;

for (int i = 0; i level; i++) {

preStr += ” “;

}

File[] childs = f.listFiles();

for (int i = 0; i childs.length; i++) {

System.out.println(preStr + childs[i].getName());

if (childs[i].isDirectory()) {

tree(childs[i], level + 1);

}

}

}

}

如何用Java实现树形结构啊?

package tree;

import java.util.LinkedList;

import java.util.List;

/**

* 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历

*

* 参考资料0:数据结构(C语言版)严蔚敏

*

* 参考资料1:

*

* 参考资料2:

*

* @author ocaicai@yeah.net @date: 2011-5-17

*

*/

public class BinTreeTraverse2 {

private int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

private static ListNode nodeList = null;

/**

* 内部类:节点

*

* @author ocaicai@yeah.net @date: 2011-5-17

*

*/

private static class Node {

Node leftChild;

Node rightChild;

int data;

Node(int newData) {

leftChild = null;

rightChild = null;

data = newData;

}

}

public void createBinTree() {

nodeList = new LinkedListNode();

// 将一个数组的值依次转换为Node节点

for (int nodeIndex = 0; nodeIndex array.length; nodeIndex++) {

nodeList.add(new Node(array[nodeIndex]));

}

// 对前lastParentIndex-1个父节点按照父节点与孩子节点的数字关系建立二叉树

for (int parentIndex = 0; parentIndex array.length / 2 – 1; parentIndex++) {

// 左孩子

nodeList.get(parentIndex).leftChild = nodeList

.get(parentIndex * 2 + 1);

// 右孩子

nodeList.get(parentIndex).rightChild = nodeList

.get(parentIndex * 2 + 2);

}

// 最后一个父节点:因为最后一个父节点可能没有右孩子,所以单独拿出来处理

int lastParentIndex = array.length / 2 – 1;

// 左孩子

nodeList.get(lastParentIndex).leftChild = nodeList

.get(lastParentIndex * 2 + 1);

// 右孩子,如果数组的长度为奇数才建立右孩子

if (array.length % 2 == 1) {

nodeList.get(lastParentIndex).rightChild = nodeList

.get(lastParentIndex * 2 + 2);

}

}

/**

* 先序遍历

*

* 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已

*

* @param node

* 遍历的节点

*/

public static void preOrderTraverse(Node node) {

if (node == null)

return;

System.out.print(node.data + ” “);

preOrderTraverse(node.leftChild);

preOrderTraverse(node.rightChild);

}

/**

* 中序遍历

*

* 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已

*

* @param node

* 遍历的节点

*/

public static void inOrderTraverse(Node node) {

if (node == null)

return;

inOrderTraverse(node.leftChild);

System.out.print(node.data + ” “);

inOrderTraverse(node.rightChild);

}

/**

* 后序遍历

*

* 这三种不同的遍历结构都是一样的,只是先后顺序不一样而已

*

* @param node

* 遍历的节点

*/

public static void postOrderTraverse(Node node) {

if (node == null)

return;

postOrderTraverse(node.leftChild);

postOrderTraverse(node.rightChild);

System.out.print(node.data + ” “);

}

public static void main(String[] args) {

BinTreeTraverse2 binTree = new BinTreeTraverse2();

binTree.createBinTree();

// nodeList中第0个索引处的值即为根节点

Node root = nodeList.get(0);

System.out.println(“先序遍历:”);

preOrderTraverse(root);

System.out.println();

System.out.println(“中序遍历:”);

inOrderTraverse(root);

System.out.println();

System.out.println(“后序遍历:”);

postOrderTraverse(root);

}

}

java树状结构图如果控制权限,我是把数据全部存在一张表中,子节点存有父节点的id号,树状图已经出来

我想你这个要实现的所谓的权限应该是,只要用户点击某个节点就查询其是否有该节点的权限吧?如果有权限就展示有权限操作的内容,没有就提示没有权限?我不知道我理解的对不对。

或者是另一种情况,就是当前登录的用户有哪些菜单的权限就在树形图中只展示他有权限的菜单。

前者需要通过ajax去数据库判断,当然如果对无刷新要求不高可以直接跳action去数据库判断;后者在输出树状图的时候就把权限判断好,后面就不需要判断了。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/279437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-20 15:04
下一篇 2024-12-20 15:04

相关推荐

  • Python绘制树状图

    本文将从多个方面详细阐述Python如何绘制树状图。树状图展示了一个层级结构,常用于表示组织结构、家谱、关系图等。Python作为一种高级编程语言,具有丰富的可视化库,有许多方法可…

    编程 2025-04-29
  • 如何添加图例标签

    图例标签(Legend)是一种添加在图表上的说明性标签,可以帮助观众更好地理解图表展示的数据。无论你是在制作散点图、折线图还是饼图,图例标签都是一个必不可少的元素。本文将从以下几个…

    编程 2025-04-27
  • Python底层逻辑解析

    Python作为一种高级编程语言,越来越受到开发者的青睐。但是作为一名优秀的Python开发者,对Python底层的逻辑也需要有一定了解。本文将从多个方面详细阐述Python底层逻…

    编程 2025-04-27
  • Python逻辑运算符优先级

    本篇文章将从多个方面对Python逻辑运算符优先级进行详细阐述,包括优先级规则、优先级示例及代码实现等内容。 一、优先级规则 在Python中,逻辑运算符的优先级从高到低依次为“n…

    编程 2025-04-27
  • 逻辑回归对自变量的要求

    逻辑回归是一种常用的分类算法,它通过训练样本数据来建立模型,并通过对新样本的归类来预测输出结果。逻辑回归对自变量有一定的要求,本文将从多个方面进行阐述。 一、变量的线性关系 逻辑回…

    编程 2025-04-27
  • Cut 几列: 从数据切片到逻辑建模

    本文将从数据、数据处理、逻辑建模等多个方面详细阐述 Cut 几列。同时,提供完整的代码示例,以便读者深入理解。 一、数据切片 Cut 几列是一个常用的数据处理工具,主要用于将数据按…

    编程 2025-04-27
  • if not in case – Python中使用if语句进行逻辑判断的技巧

    if语句是Python中进行逻辑判断的基础语句之一。在if语句中,我们可以使用not关键字和in关键字来进行更加灵活的判断。本文将详细介绍Python中使用if not in ca…

    编程 2025-04-27
  • Python逻辑回归梯度下降法

    本文将通过Python逻辑回归梯度下降法,对于逻辑回归的原理、实现方法和应用进行详细阐述。 一、逻辑回归原理 逻辑回归是一种常用的分类算法,其原理可以用线性回归模型来描述,将线性回…

    编程 2025-04-27
  • 从多个方面详解业务逻辑

    一、用户登陆 用户登陆是系统的一个重要功能,一般需要进行账号密码验证,防止非法用户进入系统。在系统设计过程中,需要为每个用户分配唯一的账号和密码,同时需要提供找回密码机制,以避免用…

    编程 2025-04-22
  • ggplot2如何添加图例

    一、通过添加关键字参数来自定义图例 在ggplot2中,可以直接通过添加关键字参数来自定义图例,例如添加图例标题、修改图例位置等等。具体代码如下: library(ggplot2)…

    编程 2025-04-18

发表回复

登录后才能评论