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/zh-tw/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

發表回復

登錄後才能評論