「java树形类」树形有哪些类型

博主:adminadmin 2022-11-27 19:57:07 66

本篇文章给大家谈谈java树形类,以及树形有哪些类型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java中有没有现成的树形结构的类

树时用来存储东西的,如果非要说类似的类,那么应该是treemap和treeset应该是使用的avl平衡二叉树实现的。其他的,好像暂时没有发现。正常算法使用的树,都是用的node里面存放引用来实现的。

java实现tree树性能如何

树与二叉树实现差不多,二叉树类变量里面有两个节点,通过配置一些参数让数据库性能达到最优。

用Java实现的数据树形封装。

Java递归如何正确输出树形菜单

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

[java]

view

plain

copy

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;

}

}

输出树形菜单类:

[java]

view

plain

copy

package

com.tree;

import

java.util.ArrayList;

import

java.util.List;

public

class

Tree

{

private

StringBuffer

html

=

new

StringBuffer();

private

ListNode

nodes;

public

Tree(ListNode

nodes){

this.nodes

=

nodes;

}

public

String

buildTree(){

html.append("ul");

for

(Node

node

:

nodes)

{

Integer

id

=

node.getId();

if

(node.getParentId()

==

)

{

html.append("\r\nli

id='"

+

id

+

"'"

+

node.getName()+

"/li");

build(node);

}

}

html.append("\r\n/ul");

return

html.toString();

}

private

void

build(Node

node){

ListNode

children

=

getChildren(node);

if

(!children.isEmpty())

{

html.append("\r\nul");

for

(Node

child

:

children)

{

Integer

id

=

child.getId();

html.append("\r\nli

id='"

+

id

+

"'"

+

child.getName()+

"/li");

build(child);

}

html.append("\r\n/ul");

}

}

private

ListNode

getChildren(Node

node){

ListNode

children

=

new

ArrayListNode();

Integer

id

=

node.getId();

for

(Node

child

:

nodes)

{

if

(id.equals(child.getParentId()))

{

children.add(child);

}

}

return

children;

}

}

如何用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树形类和树形有哪些类型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。