当前位置:首页 > 代码 > 正文

树形结构代码(数据结构关于树的代码)

admin 发布:2022-12-19 15:31 84


本篇文章给大家谈谈树形结构代码,以及数据结构关于树的代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用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);

}

}

jsp实现树形结构代码

其实没什么很大差别...

随自己把!

用了递归不会很慢的....

输出二叉树树形的数据结构程序代码怎么写

下面这个算法能帮你:

/*二叉树的建立与遍历

以二叉链表作为存储结构,定义二叉树类型 bitree;

实现二叉树的以下运算

建立 create( ) 输入二叉树的结点元素,建立二叉链表。

选择一种遍历方式(先序、中序、后序)遍历这棵二叉树。 */

#include stdio.h

struct node

{

char data;

struct node *lchild,*rchild;

};

/****************************二叉树的创建*****************************/

struct node *creat_bintree(struct node *t)

{

char ch;

printf("\n 按照先序序列输入二叉树的每个值,空格代表空树:");

ch=getchar();

getchar();

if( ch==' ')

t=NULL;

else

{

t = (struct node *)malloc(sizeof(struct node));

t-data=ch;

t-lchild = creat_bintree( t-lchild );

t-rchild = creat_bintree( t-rchild );

}

return(t);

}

/****************************二叉树的先序遍历*****************************/

void preorder(struct node *t )

{

if (t)

{

putchar(t-data);

preorder(t-lchild);

preorder(t-rchild);

}

}

/****************************二叉树的中序遍历*****************************/

void inorder(struct node *t )

{

if (t)

{

inorder(t-lchild);

putchar(t-data);

inorder(t-rchild);

}

}

/****************************二叉树的后序遍历*****************************/

void postorder(struct node *t )

{

if (t)

{

postorder(t-lchild);

postorder(t-rchild);

putchar(t-data);

}

}

void main()

{

struct node *t;

t=creat_bintree(t);

if (t)

{

printf("\n after preorder:\n");

preorder(t);

printf("\n after inorder:\n");

inorder(t);

printf("\n after postorder:\n");

postorder(t);

}

}

用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!

当然在理论上是可以实现的,可以将所有的子文件都以树形结构出来,但是文件很多的时候就会非常纠结

我理解中的树形结构大概是这样(不知道这样的图形是不是你想要的)

a

|

------------------

| | |

b c d

以下是代码,找了系统盘下子文件较少的文件夹 C:/Windows/AppPatch,当然也可以换成你自己的路径来测试

import java.io.File;

public class FileTree {

/**

* @param args

*/

public static void main(String[] args) {

try{

File file = new File("C:\\Windows\\AppPatch");

if(file.isDirectory()){

String[] fileList = file.list();

String fileName = file.getName();

int allLength = 0;

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

allLength += (fileList[i]+" ").length();

}

for(int i=0;iallLength/2;i++){

System.out.print(" ");

}

System.out.println(fileName);

for(int i=0;iallLength/2;i++){

System.out.print(" ");

}

for(int i=0;ifileName.length()/2;i++){

System.out.print(" ");

}

System.out.println("|");

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

System.out.print("-");

}

System.out.println("");

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

int tmpLength = fileList[i].length();

int subLength = tmpLength/2;

int lastLength = tmpLength - subLength - 1;

for(int j=0;jsubLength;j++){

System.out.print(" ");

}

System.out.print("|");

for(int j=0;jlastLength;j++){

System.out.print(" ");

}

System.out.print(" ");

}

System.out.println("");

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

System.out.print(fileList[i]+" ");

}

}

else{

System.out.println("对不起,你提供的路径不是文件夹");

}

}

catch (Exception e) {

e.printStackTrace();

}

}

}

这时可以发现输出每一个子文件/子文件夹的名字已经比较长,要是再想输出这些子文件夹里面的文件,那幅图个人觉得相当纠结,也许是我水平没够吧或是我理解错了你说的树形结构

希望以上代码对你有帮助

C# 树形结构列表 的问题

首先Tree应该是一个自定义类,

tree.GetCategorys(); 是返回创建这颗树的所有结点,具体怎么定义,怎么来,看用户自己是怎么定义的了

// 如果没有结点, 就没必要创建树了, 直接返回

if(ds == null || ds.Tables.Count = 0 || ds.Tables[0].Rows.Count = 0) return;

// 这是要创建的树, 清空相当于进行初始化

tv.Nodes.Clear(); ///清空树的所有节点

///获取根节点的所有数据 (ParentID='0'的为根结点, 刚才说了,所有结点都存放在ds.Tables[0]中)

DataRow[] rootRows = ds.Tables[0].Select("ParentID='0'");

//如果没有根结点, 就没必要继续了, 返回

if(rootRows.Length = 0) return;

//创建根节点,并添加到TreeView控件中

TreeNode root = new TreeNode(); // 这是一个结点对象,此将作为根结点

// 根结点的显示文本为第一行的Name字段

root.Text = rootRows[0]["Name"].ToString();

// 根结点的value值为第一行的ID字段

root.Value = rootRows[0]["ID"].ToString();

// 选中这个结点的动作----展开子结点

root.SelectAction = TreeNodeSelectAction.Expand;

// 将此结点加到树的第一层次中---因为直接加到树中,才决定了它是根结点

// 其它的子结点不是直接加到树中, 而是加入根结点中的(此种方法使用了组合

// 模式, 不明白的话,建议看看这种模式的说明

tv.Nodes.Add(root);

//刚才说了, 子结点是加入到根结点的, 这样才能形成树,

//这个方法是创建子结点,所以参数中要传入根结点

private static void CreateSubNode(TreeNode parentNode,DataTable dt)

{

// 根结点为空,返回

if(parentNode == null || dt == null) return;

///获取当前节点的所有数据 , 根据根结点ID查询根结点下的子结点

DataRow[] rows = dt.Select("ParentID='" + parentNode.Value + "'","ShowOrder");

// 循环所有子结点, 一个一个加入到根结点

foreach(DataRow row in rows)

{

///创建当前节点 , 下面这些跟上面的相似, 不用再说明

TreeNode node = new TreeNode();

node.Text = row["Name"].ToString();

node.Value = row["ID"].ToString();

node.Expanded = false;

//将此子结点加入根结点

parentNode.ChildNodes.Add(node);

///递规创建当前节点(node)的子节点

// 此子结点有可能也有子结点, 所以也要为它添加子结点

// 此递归的结束条件是完成所有子结点的循环

CreateSubNode(node,dt);

}

}

如何用vb处理树形结构

树状结构使用treeview实现,控件添加方法:右击“工具箱”-“部件”-microsoft windows common controls 6.0-确定,应用

下面是简单的添加删除方法,

Option Explicit

‘添加项目

Private Sub Command1_Click()

Dim nodx As Node

Set nodx = TreeView1.Nodes.Add(, , "zf", "紫风无痕关系(双击收起)")

Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zfwife", "老婆")

Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zflover", "情人")

Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zffriend", "朋友")

Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp1", "大老婆")

Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp2", "二老婆")

Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp3", "三老婆")

Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp4", "四老婆")

Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp5", "五老婆")

Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr1", "1号情人")

Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr2", "2号情人")

Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr3", "3号情人")

Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py1", "张三")

Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py2", "李四")

Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py3", "王麻子")

Set nodx = TreeView1.Nodes.Add("py1", tvwChild, "pylp1", "张三的老婆")

Set nodx = TreeView1.Nodes.Add("py1", tvwChild, "pylp2", "张三的孩子")

nodx.EnsureVisible

End Sub

'删除代码

Private Sub Command2_Click()

MsgBox ("将要删除" TreeView1.SelectedItem.Text)

TreeView1.Nodes.Remove (TreeView1.SelectedItem.Index)

End Sub

关于树形结构代码和数据结构关于树的代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/10454.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载