社区
Java SE
帖子详情
求静态 java tree事例代码
djonlyone001
2009-05-07 04:40:59
就是静态java代码编写的树
...全文
673
4
打赏
收藏
求静态 java tree事例代码
就是静态java代码编写的树
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
djonlyone001
2009-05-08
打赏
举报
回复
还得谢谢大家的回帖啊
djonlyone001
2009-05-08
打赏
举报
回复
[Quote=引用 2 楼 xiaoduan5267 的回复:]
不知道你说的什么意思???JTree??
[/Quote]
我找到了,就是dtree
Miracle1216
2009-05-07
打赏
举报
回复
不知道你说的什么意思???JTree??
scliuqiang
2009-05-07
打赏
举报
回复
给你一个代码(二叉搜索树)比较简单可以自己改改
package test;
/**
* 节点
* @author Administrator
*/
public class Node {
int i;
Node leftNode;
Node rightNode;
}
-------------------------〉〉〉〉〉
package test;
import java.util.Random;
/**
* 二叉搜索树
* @author Administrator
*
*/
public class Tree {
Node root;//根节点
/**
* 查找节点
* @param key 查找的关键字
* @return 关键字所在节点
*/
public Node find(int key){
Node currentNode = root;
while(currentNode.i != key){
if(key > currentNode.i){
currentNode = currentNode.rightNode;
}else{
currentNode = currentNode.leftNode;
}
if(null == currentNode){
return null;
}
}
return currentNode;
}
/**
* 查找最大的节点
* @return 最大的节点
*/
public Node findMax(){
Node currentNode = root;
while(null != currentNode.rightNode){
currentNode = currentNode.rightNode;
}
return currentNode;
}
/**
* 查找最小的节点
* @return 最小的节点
*/
public Node findMin(){
Node currentNode = root;
while(null != currentNode.leftNode){
currentNode = currentNode.leftNode;
}
return currentNode;
}
/**
* 遍历树
* @param node
*/
public void traverse(Node node){
if(null != node){
traverse(node.leftNode);
System.out.println(node.i);
traverse(node.rightNode);
}
}
/**
* 插入节点
* @param node 需要插入的节点
*/
public void insert(Node node){
if(null == root){
root = node;
}else{
Node currentNode = root;
while(true){
if(currentNode.i > node.i){
if(null == currentNode.leftNode){
currentNode.leftNode = node;
return;
}else{
currentNode = currentNode.leftNode;
}
}else{
if(null == currentNode.rightNode){
currentNode.rightNode = node;
return;
}else{
currentNode = currentNode.rightNode;
}
}
}
}
}
/**
* 获得父节点
* @param node 原节点
* @return 原节点的父节点
*/
public Node getParentNode(Node node){
Node parentNode = root;
System.out.println("parentNode:"+parentNode.i);
while(true){
if(parentNode.leftNode.equals(node) || parentNode.rightNode.equals(node)){
return parentNode;
}else if(parentNode.leftNode.i > node.i){
parentNode = parentNode.leftNode;
}else{
parentNode = parentNode.rightNode;
}
}
}
/**
* 获得后继节点
* @param node 原节点
* @return 原节点的后继节点
*/
public Node getSuccessorNode(Node node){
Node SuccessorNode = node.rightNode;
while(SuccessorNode.leftNode != null){
SuccessorNode = SuccessorNode.leftNode;
}
return SuccessorNode;
}
/**
* 删除节点
* @param deleteNode 要删除的节点
*/
public void deleteNode(Node deleteNode){
if(deleteNode.equals(root)){
root = null;
}else{
Node leftNode = deleteNode.leftNode;
Node rightNode = deleteNode.rightNode;
Node parentNode = getParentNode(deleteNode);
if(parentNode.leftNode == deleteNode){
if(null == leftNode && null == rightNode){
parentNode.leftNode = null;
}else if(null != leftNode && null != rightNode){
Node successorNode = getSuccessorNode(deleteNode);
getParentNode(successorNode).leftNode = successorNode.rightNode;
parentNode.leftNode = successorNode;
successorNode.leftNode = leftNode;
successorNode.rightNode = rightNode;
}else{
parentNode.leftNode = null==leftNode?rightNode:leftNode;
}
}else{
if(null == leftNode && null == rightNode){
parentNode.rightNode = null;
}else if(null != leftNode && null != rightNode){
Node successorNode = getSuccessorNode(deleteNode);
getParentNode(successorNode).leftNode = successorNode.rightNode;
parentNode.leftNode = successorNode;
successorNode.leftNode = leftNode;
successorNode.rightNode = rightNode;
}else{
parentNode.rightNode = null==leftNode?rightNode:leftNode;
}
}
}
}
/**
* 按关键字删除节点
* @param key 要删除节点的关键字
*/
public void deleteNode(int key){
deleteNode(find(key));
}
public static void main(String[] args){
Tree tree = new Tree();
Random r = new Random();
for(int i = 0; i < 50; i++){
Node node = new Node();
node.i = r.nextInt(100);
tree.insert(node);
}
tree.traverse(tree.root);
tree.deleteNode(50);
System.out.println("max:"+tree.findMax().i);
tree.traverse(tree.root);
System.out.println("min:"+tree.findMin().i);
}
}
SWT 编 程 总 结
包括常用控件的介绍,布局、事件等等,都是平时用得比较多的
Java
Parser源
代码
解析实战项目:
Java
Parser_Collaboration1
Java
Parser是一个强大的开源库,它允许开发者解析、操作、生成
Java
源
代码
。工具使用抽象语法树(AST)作为核心数据结构,提供了对
Java
5到
Java
17版本的支持,使得对
Java
代码
进行高级分析和变换成为可能。随着
Java
技术的发展,
Java
Parser也在不断地更新和维护,以适应新的语言特性和编程范式。它被广泛应用于IDE插件、
代码
生成器、
代码
转换工具、
代码
分析工具和
静态
代码
分析工具中。
基于
Java
Parser的
Java
源码分析与重构实战示例
Java
Parser是一个轻量且高效的开源库,专用于解析
Java
源码并生成抽象语法树(AST),广泛应用于
静态
分析、
代码
生成与重构工具开发。相比Eclipse JDT的复杂性和ANTLR的高学习成本,
Java
Parser以简洁的API和良好的文档显著降低了入门门槛,同时支持从
Java
8到
Java
17+的语法特性,具备出色的版本兼容性。在Maven项目中引入
Java
Parser只需添加以下依赖:Gradle用户则可使用:建议统一JDK编译版本与中的。
C++Test
代码
静态
检查规则制作方法
C++Test
代码
静态
检查规则制作方法 1 前言 在一个团队进行软件开发的过程中,一般都会制定一个大家共同遵守的编码规范,程序员遵循良好的编码规范写程序有很多好处: 1.有助于程序的维护,降低软件生命周期成本,符合项目管理的规律; 2.使团队中相关人员的流动对项目的影响尽可能小,有利于项目的控制与管理 3.提高程序的可读性,有利于相关设计人员交流,
JAVA
字节码增强技术之ASM示例
ASM系列之一:初探ASM 一、什么是ASM ASM是一个
JAVA
字节码分析、创建和修改的开源应用框架。在ASM中提供了诸多的API用于对类的内容进行字节码操作的方法。与传统的BCEL和SERL不同,在ASM中提供了更为优雅和灵活的操作字节码的方式。目前ASM已被广泛的开源应用架构所使用,例如:Spring、Hibernate等。二、ASM能干什么 分析一个类、从字节码角度创建一个类、修
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章