求静态 java tree事例代码 就是静态java代码编写的树 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一个代码(二叉搜索树)比较简单可以自己改改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); }} 不知道你说的什么意思???JTree?? 求一个排列组合问题算法? java的框架到底是什么??能打个比方说下吗? The method **() is undefined for the type 用JAVA如何实现对软件的自动升级 只要是调用javax.servlet包就会包错不能编译生成.class文件 请教高手关于 JAVA SWING的JTable 异常错误 关于的system.out.flush()问题 请问哪里能搞到com.ms...........java包! 报错。。。 一个简单的java 程序 填空题 谢谢 各位了 如何把int型数组转换成object类型的数组
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);
}
}