就是静态java代码编写的树

解决方案 »

  1.   

    给你一个代码(二叉搜索树)比较简单可以自己改改
    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);
    }
    }
      

  2.   

    不知道你说的什么意思???JTree??