二叉树 添加和查找

------------ 前几天闲下来时间做的一个二叉树的小例子-----------
(仅供参考)
package listsample;
public class TreeList {
    /*
         节点类.不作任何操作 只声明节点数据成员.
         并初始化
     */
    class TreeNode{
         public int nodeValue;
         public TreeNode rightChild;
         public TreeNode leftChild;
         public TreeNode(){
             rightChild = null;
             leftChild  = null;
         }
    }
    public TreeNode  root;//声明一个节点
    public TreeList(){
        root = new TreeNode();//并创建
        root.nodeValue=1000;//初始节点的值为1000
    }
    /*
     *method addNode()
     *添加节点
     */
    public void addNode(int nodeValue){
            TreeNode  newNode = new TreeNode();//声明节点
            newNode.nodeValue=nodeValue;//节点的值=传进来的值
            TreeNode   tempNode = root;//声明一个节点  把创建的节点的值给tempNode
            while(true){
                if(nodeValue>tempNode.nodeValue){//如果传进的值大于节点的值
                    if(tempNode.rightChild==null){//节点的右边子节点=于空的话
                        tempNode.rightChild=newNode;//让这个值放在节点的右边
                        break;//退出
                    }else{
                        tempNode = tempNode.rightChild;//如果节点右边右值的话. 把节点右边的值赋给创建的这个节点
                        continue;//继续循环
                    }
                }
                if(nodeValue<tempNode.nodeValue){//如果传入的值小于左边的节点值
                    if(tempNode.leftChild==null){//如果节点左边的值=空
                        tempNode.leftChild=newNode;//让这个传入的值放在节点的左边
                        break;
                    }else{
                        tempNode = tempNode.leftChild;//如果有值.把节点左边的值赋给这个节点
                        continue;//继续循环
                    }
                }
            }
    }
    /*
       method display()
       显示方法
     */
    public void display(TreeNode root){//传入的是那个节点
        System.out.println(root.nodeValue);//先把根节点的值显示出来
        TreeNode  tempNode = root;//把传入的节点值给这个节点
        if(tempNode.rightChild==null&&tempNode.leftChild==null){//如果根节点的左右都为空 则退出
               return;
        }else{
            if(tempNode.rightChild!=null){//如果节点的右边不等于空
                display(tempNode.rightChild);//递归调用自身 显示节点的右边数据
            }
            if(tempNode.leftChild!=null){//同上
                display(tempNode.leftChild);
            }
        }
    }
    /*
       method selectTree()
       查找节点方法
       parmet a 是要查找的值
       TreeNode 传入的是个节点
     */
    public void selectTree(int a,TreeNode root){
        TreeNode  tempNode = root;//把传入的节点给这个节点
        if(tempNode.nodeValue==a){//如果节点里的值等于传入的值
            System.out.println("find number");//显示找到
            return;//并退出
        }else if(tempNode.leftChild==null&&tempNode.rightChild==null){//如果左右节点都为空
            return ;//退出
        }else{
            if(tempNode.rightChild!=null){//节点的右边不为空的话
                selectTree(a,tempNode.rightChild);//递归调用自身显示要查找右边的值
            }
            if(tempNode.leftChild!=null){//同上
                selectTree(a,tempNode.leftChild);
            }
        }
    }
   
    public static void main(String[] args) {
        TreeList treelist = new TreeList();
        treelist.addNode(800);
        treelist.addNode(900);
        treelist.addNode(569);
        treelist.addNode(240);
        treelist.addNode(300);
        treelist.addNode(169);
        treelist.display(treelist.root);
        System.out.println("----------------");
        treelist.selectTree(300,treelist.root);
        System.out.println("----------------");
        treelist.selectTree(245,treelist.root);
       
    }
}

你可能感兴趣的:(二叉树 添加 查找)