<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    春風博客

    春天里,百花香...

    導航

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    二叉樹搜索樹代碼

    /**
     * 二叉樹節(jié)點類
     * 
    @author HEYANG
     * 
    @since 2008-7-26 下午02:59:06
     
    */

    class Node<extends Comparable> {
      
    public Node(T data){
        
    this.data=data;
      }

      
      T data;
      Node
    <T> left;
      Node
    <T> right;
    }


    /**
     * 二叉樹類
     * 
    @author HEYANG
     * 
    @since 2008-7-26 下午02:55:33
     
    */

    public class BinaryTree<extends Comparable> {

      
    /**
       * 根節(jié)點
       
    */

      
    private Node<T> root;

      
    /**
       * 插入一個值
       * 
    @param value
       
    */

      
    public void insert(T value) {
        Node
    <T> node = new Node<T>(value);

        
    if (root == null{
          root 
    = node;
        }
     else {
          Node
    <T> curr = root;
          Node
    <T> parrent;

          
    while (true{
            parrent 
    = curr;

            
    if (value.compareTo(curr.data) >= 0{
              curr 
    = curr.right;

              
    if (curr == null{
                parrent.right
    =node;
                
    return;
              }

            }
     else {
              curr 
    = curr.left;

              
    if (curr == null{
                parrent.left
    =node;
                
    return;
              }

            }

          }

        }

      }


      
    /**
       * 尋找一個值對應的節(jié)點
       * 
    @param value
       * 
    @return
       
    */

      
    public Node<T> find(T value) {
        Node
    <T> curr = root;

        
    while (curr.data.equals(value) == false{
          
    if (value.compareTo(curr.data) > 0{
            curr 
    = curr.right;
          }
     else {
            curr 
    = curr.left;
          }


          
    if (curr == null{
            
    return null;
          }

        }


        
    return curr;
      }


      
    /**
       * 輸出
       *
       
    */

      
    public void printAll() {
        System.out.println(
    "--------------先序遍歷------------------");
        preOrder(root);
        System.out.println(
    "--------------中序遍歷------------------");
        inorder(root);
        System.out.println(
    "--------------后序遍歷------------------");
        postOrder(root);
      }

      
      
    /**
       * 先序遍歷
       * 
    @param node
       
    */

      
    private void preOrder(Node<T> node) {
        
    if (node != null{
          System.out.println(node.data);
          preOrder(node.left);      
          preOrder(node.right);
        }

      }


      
    /**
       * 中序遍歷
       * 
    @param node
       
    */

      
    private void inorder(Node<T> node) {
        
    if (node != null{
          inorder(node.left);
          System.out.println(node.data);
          inorder(node.right);
        }

      }

      
      
    /**
       * 后序遍歷
       * 
    @param node
       
    */

      
    private void postOrder(Node<T> node) {
        
    if (node != null{
          postOrder(node.left);     
          postOrder(node.right);
          System.out.println(node.data);
        }

      }


      
    public static void main(String[] args) {
        
        Integer[] arr
    ={31,25,47,42,50};
        
        
    // 以數(shù)組2為基礎創(chuàng)建二叉樹
        BinaryTree<Integer> tree1=new BinaryTree<Integer>();   
        
    for(Integer i:arr){
          tree1.insert(i);
        }

        
        tree1.printAll();
        
        
        String[] arr02
    ={"Ceaser","Andy","Martin","Bill","Felex","Fowler","Green","Alice","Gates"};
        
        
    // 以數(shù)組2為基礎創(chuàng)建二叉樹
        BinaryTree<String> tree=new BinaryTree<String>();   
        
    for(String str:arr02){
          tree.insert(str);
        }

        
        tree.printAll();
        
        
    // 將在二叉樹中不存在的元素放入鏈錶
        String[] arr01={"Andy","Bill","Cindy","Douglas","Felex","Green"};
        List
    <String> ls=new ArrayList<String>();    
        
    for(String str:arr01){
          
    if(tree.find(str)==null){
            ls.add(str);
          }

        }

        
        
    // 輸出
        System.out.println("--------------二叉樹中不存在的元素有------");
        
    for(String str:ls){
          System.out.println(str);
        }

      }

    }

    posted on 2008-07-26 16:25 sitinspring 閱讀(1179) 評論(1)  編輯  收藏 所屬分類: 算法數(shù)據(jù)結構

    評論

    # re: 二叉樹搜索樹代碼 2008-10-04 08:34 sclsch

    老兄,二叉樹有沒有實際應用的實例。  回復  更多評論   

    sitinspring(http://www.tkk7.com)原創(chuàng),轉載請注明出處.
    主站蜘蛛池模板: 亚洲av午夜电影在线观看| 东北美女野外bbwbbw免费| 亚洲午夜爱爱香蕉片| 国产午夜无码精品免费看动漫| 久久精品国产亚洲77777| 日韩成人免费视频播放| 日韩精品无码免费专区午夜不卡| 亚洲成人午夜在线| 国产一级淫片a免费播放口之 | 亚洲一区二区免费视频| 亚洲av无码专区在线观看素人| 91在线老王精品免费播放| 免费人成大片在线观看播放电影| 久久久久亚洲Av片无码v| 日韩精品免费电影| 国产精品区免费视频| 美女扒开尿口给男人爽免费视频| 亚洲无删减国产精品一区| 亚洲Aⅴ无码一区二区二三区软件| 国产青草视频在线观看免费影院| 一个人看的www免费高清| 亚洲综合色7777情网站777| 亚洲中文字幕无码爆乳AV| 在线观看免费人成视频| 中文字幕无码免费久久| 国产精品亚洲一区二区三区在线观看 | 最近中文字幕无吗免费高清| 中文字幕不卡高清免费| 亚洲熟女www一区二区三区| 亚洲专区在线视频| 亚洲精品国精品久久99热一| 免费国产怡红院在线观看| 猫咪社区免费资源在线观看| 无码一区二区三区免费| aa午夜免费剧场| 美女视频黄.免费网址| 亚洲熟女精品中文字幕| 亚洲一区二区三区在线观看蜜桃| 亚洲AV日韩AV天堂一区二区三区| 亚洲一区二区三区免费| 波多野结衣视频在线免费观看 |