tree的实现 java, 二叉树的实现
来源:互联网 发布:专业制谱软件 编辑:程序博客网 时间:2024/06/05 22:52
package com.link;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Tree {
private TreeNode root = new TreeNode();
private List<TreeNode> nodes = new ArrayList<TreeNode>();
public TreeNode getRootNode(){
return root;
}
public void addNodes(TreeNode treeNode){
nodes.add(treeNode);
}
/**
* 移除节点对象
* @param treeNode 要移除的节点对象
*/
public void remove(TreeNode treeNode){
Iterator<TreeNode> iterator = nodes.iterator();
TreeNode next = null;
while(iterator.hasNext()){
next = iterator.next();
if(next == treeNode){
nodes.remove(next);
break;
}
}
}
/**
* 根据节点索引移除节点对象
* @param index 要移除节点对象的索引 以0开始
*/
public void remove(int index){
nodes.remove(index);
}
/**
* 根据节点索引获取节点对象
* @param index 要获取节点对象的索引
* @return
*/
public TreeNode getNode(int index){
return nodes.get(index);
}
/**
* 根据元素的子节点的个数
* @return
*/
public int size(){
return nodes.size();
}
}
package com.link;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TreeNode {
private TreeNode parentNode;
private List<TreeNode> childNodes = new ArrayList<TreeNode>();
private String value;
private String text;
public TreeNode() {
super();
// TODO Auto-generated constructor stub
}
/**
* 构造方法
* @param value 值
* @param text 文本
*/
public TreeNode(String value, String text) {
super();
this.value = value;
this.text = text;
}
/**
* 获取父节点
* @return 返回节点对象
*/
public TreeNode getParentNode() {
return parentNode;
}
/**
* 设置父节点对象
* @param parentNode 要设置的对象
*/
public void setParentNode(TreeNode parentNode) {
this.parentNode = parentNode;
}
/**
* 获取子节点
* @return
*/
public List<TreeNode> getChildNodes() {
return childNodes;
}
/**
* 设置子节点
* @param childNodes
*/
public void setChildNodes(List<TreeNode> childNodes) {
this.childNodes = childNodes;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
/**
* 添加子节点
* @param treeNode
*/
public void addChildNode(TreeNode treeNode){
treeNode.parentNode = this;
childNodes.add(treeNode);
}
/**
* 移除节点对象
* @param treeNode 要移除的节点对象
*/
public void removechildNode(TreeNode treeNode){
Iterator<TreeNode> iterator = childNodes.iterator();
TreeNode next = null;
while(iterator.hasNext()){
next = iterator.next();
if(next == treeNode){
childNodes.remove(next);
break;
}
}
}
/**
* 根据索引移除节点
* @param index 要移除节点的子节点
*/
public void removechildNode(int index){
childNodes.remove(index);
}
/**
* 根据索引获取子节点
* @param index
* @return
*/
public TreeNode getChildNode(int index){
return childNodes.get(index);
}
/**
* 返回子节点个数
* @return
*/
public int childNodeSize(){
return childNodes.size();
}
}
package com.link;
public class TreeTest {
public static void main(String[] args) {
Tree tree = new Tree();
tree.addNodes(new TreeNode("1", "a"));
tree.addNodes(new TreeNode("2", "b"));
tree.addNodes(new TreeNode("3", "c"));
tree.addNodes(new TreeNode("4", "d"));
tree.getNode(0).addChildNode(new TreeNode("11","aa"));
tree.getNode(0).addChildNode(new TreeNode("12","bb"));
tree.getNode(0).addChildNode(new TreeNode("13","cc"));
tree.getNode(0).addChildNode(new TreeNode("14","dd"));
tree.getNode(1).addChildNode(new TreeNode("21","aa1"));
tree.getNode(1).addChildNode(new TreeNode("22","bb1"));
tree.getNode(1).addChildNode(new TreeNode("23","cc1"));
tree.getNode(1).addChildNode(new TreeNode("24","dd1"));
tree.getNode(3).addChildNode(new TreeNode("31","aa13"));
tree.getNode(3).addChildNode(new TreeNode("32","bb13"));
tree.getNode(3).addChildNode(new TreeNode("33","cc13"));
tree.getNode(3).addChildNode(new TreeNode("34","dd13"));
TreeNode node = new TreeNode();
for(int i =0 ;i<tree.size();i++){
for(int j =0 ;j<tree.getNode(i).childNodeSize();j++){
node = tree.getNode(i).getChildNode(j);
System.out.println("i:"+i+",j:"+j+",---"+node.getText() +",parent:"+ node.getParentNode().getText());
}
}
}
}
- tree的实现 java, 二叉树的实现
- 二叉树的java实现
- Java二叉树的实现
- java二叉树的实现
- 二叉树的java实现
- java二叉树的实现
- 二叉树的Java实现
- 二叉树的java实现
- 二叉树的实现Java
- 二叉树的Java实现
- ## java实现的二叉树 ##
- Java二叉树的实现(链式实现)
- Binary Search Tree(BST)二叉搜索树的实现-java语言
- 小佳弱弱学习——tree二叉树的简单实现
- 二叉查找树(binary search tree)的实现
- 二叉查找树(Binary Search Tree)的实现
- 二叉查找树的原理与实现 Binary Search Tree
- PAT1066 Root of AVL Tree 平衡二叉树的实现
- 排序算法概述
- 嵌入式Linux 的Cramfs 根文件系统配置成可读可写
- 程序员:伤不起的三十岁
- Excel列序号生成字母表示
- HQL
- tree的实现 java, 二叉树的实现
- 中断INT 13H的扩展功能
- linux串口驱动分析
- static inner class和非static inner class的实例化问题
- linux 不删除文件,清空文件内容命令
- 获取信息的有关Windows API
- Eclipse C/C++开发环境搭建----Window版
- 单选复选设置为只读灰色
- 解析C语言中的sizeof