<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

    統計

    公告

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

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    二叉樹搜索樹代碼

    /**
     * 二叉樹節點類
     * 
    @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> {

      
    /**
       * 根節點
       
    */

      
    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;
              }

            }

          }

        }

      }


      
    /**
       * 尋找一個值對應的節點
       * 
    @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};
        
        
    // 以數組2為基礎創建二叉樹
        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"};
        
        
    // 以數組2為基礎創建二叉樹
        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 閱讀(1180) 評論(1)  編輯  收藏 所屬分類: 算法數據結構

    評論

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

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

    sitinspring(http://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲制服丝袜第一页| 曰韩无码AV片免费播放不卡| 免费无码不卡视频在线观看| 特级毛片全部免费播放a一级| 伊人久久亚洲综合| 亚洲毛片在线免费观看| 久久久久亚洲国产AV麻豆| 亚洲成av人影院| 免费视频中文字幕| 久久久久国产精品免费网站| 亚洲国产精华液2020| 久久青青成人亚洲精品| 免费高清资源黄网站在线观看| 最近的2019免费中文字幕| 亚洲成年网站在线观看| 亚洲V无码一区二区三区四区观看| 成年美女黄网站18禁免费| 好久久免费视频高清| 亚洲av无码av在线播放| 91亚洲国产成人久久精品网站| 免费A级毛片在线播放不收费| 在线日本高清免费不卡| 一级全免费视频播放| 最新亚洲卡一卡二卡三新区| 亚洲成av人片天堂网| 亚洲精品视频免费观看| 毛片高清视频在线看免费观看| 美女在线视频观看影院免费天天看| MM1313亚洲精品无码久久| 亚洲国产精品一区二区久| 精品亚洲综合久久中文字幕| 亚洲AV无码之日韩精品| 精品国产免费观看久久久| 91人成网站色www免费下载| 亚欧乱色国产精品免费视频| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲天堂一区在线| 久久精品国产亚洲av水果派| 亚洲精品高清无码视频| 亚洲国产小视频精品久久久三级| 麻豆精品国产免费观看|