亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tree.java

?? 樹是一種很強大的數據結構
?? JAVA
字號:
// tree.java
// demonstrates binary tree
// to run this program: C>java TreeApp
import java.io.*;
import java.util.*;               // for Stack class
////////////////////////////////////////////////////////////////
class Node
   {
   public int iData;              // data item (key)
   public double dData;           // data item
   public Node leftChild;         // this node's left child
   public Node rightChild;        // this node's right child

   public void displayNode()      // display ourself
      {
      System.out.print('{');
      System.out.print(iData);
      System.out.print(", ");
      System.out.print(dData);
      System.out.print("} ");
      }
   }  // end class Node
////////////////////////////////////////////////////////////////
class Tree
   {
   private Node root;             // first node of tree

// -------------------------------------------------------------
   public Tree()                  // constructor
      { root = null; }            // no nodes in tree yet
// -------------------------------------------------------------
   public Node find(int key)      // find node with given key
      {                           // (assumes non-empty tree)
      Node current = root;               // start at root
      while(current.iData != key)        // while no match,
         {
         if(key < current.iData)         // go left?
            current = current.leftChild;
         else                            // or go right?
            current = current.rightChild;
         if(current == null)             // if no child,
            return null;                 // didn't find it
         }
      return current;                    // found it
      }  // end find()
// -------------------------------------------------------------
   public void insert(int id, double dd)
      {
      Node newNode = new Node();    // make new node
      newNode.iData = id;           // insert data
      newNode.dData = dd;
      if(root==null)                // no node in root
         root = newNode;
      else                          // root occupied
         {
         Node current = root;       // start at root
         Node parent;
         while(true)                // (exits internally)
            {
            parent = current;
            if(id < current.iData)  // go left?
               {
               current = current.leftChild;
               if(current == null)  // if end of the line,
                  {                 // insert on left
                  parent.leftChild = newNode;
                  return;
                  }
               }  // end if go left
            else                    // or go right?
               {
               current = current.rightChild;
               if(current == null)  // if end of the line
                  {                 // insert on right
                  parent.rightChild = newNode;
                  return;
                  }
               }  // end else go right
            }  // end while
         }  // end else not root
      }  // end insert()
// -------------------------------------------------------------
   public boolean delete(int key) // delete node with given key
      {                           // (assumes non-empty list)
      Node current = root;
      Node parent = root;
      boolean isLeftChild = true;

      while(current.iData != key)        // search for node
         {
         parent = current;
         if(key < current.iData)         // go left?
            {
            isLeftChild = true;
            current = current.leftChild;
            }
         else                            // or go right?
            {
            isLeftChild = false;
            current = current.rightChild;
            }
         if(current == null)             // end of the line,
            return false;                // didn't find it
         }  // end while
      // found node to delete

      // if no children, simply delete it
      if(current.leftChild==null &&
                                   current.rightChild==null)
         {
         if(current == root)             // if root,
            root = null;                 // tree is empty
         else if(isLeftChild)
            parent.leftChild = null;     // disconnect
         else                            // from parent
            parent.rightChild = null;
         }

      // if no right child, replace with left subtree
      else if(current.rightChild==null)
         if(current == root)
            root = current.leftChild;
         else if(isLeftChild)
            parent.leftChild = current.leftChild;
         else
            parent.rightChild = current.leftChild;

      // if no left child, replace with right subtree
      else if(current.leftChild==null)
         if(current == root)
            root = current.rightChild;
         else if(isLeftChild)
            parent.leftChild = current.rightChild;
         else
            parent.rightChild = current.rightChild;

      else  // two children, so replace with inorder successor
         {
         // get successor of node to delete (current)
         Node successor = getSuccessor(current);

         // connect parent of current to successor instead
         if(current == root)
            root = successor;
         else if(isLeftChild)
            parent.leftChild = successor;
         else
            parent.rightChild = successor;

         // connect successor to current's left child
         successor.leftChild = current.leftChild;
         }  // end else two children
      // (successor cannot have a left child)
      return true;                                // success
      }  // end delete()
// -------------------------------------------------------------
   // returns node with next-highest value after delNode
   // goes to right child, then right child's left descendents
   private Node getSuccessor(Node delNode)
      {
      Node successorParent = delNode;
      Node successor = delNode;
      Node current = delNode.rightChild;   // go to right child
      while(current != null)               // until no more
         {                                 // left children,
         successorParent = successor;
         successor = current;
         current = current.leftChild;      // go to left child
         }
                                           // if successor not
      if(successor != delNode.rightChild)  // right child,
         {                                 // make connections
         successorParent.leftChild = successor.rightChild;
         successor.rightChild = delNode.rightChild;
         }
      return successor;
      }
// -------------------------------------------------------------
   public void traverse(int traverseType)
      {
      switch(traverseType)
         {
         case 1: System.out.print("\nPreorder traversal: ");
                 preOrder(root);
                 break;
         case 2: System.out.print("\nInorder traversal:  ");
                 inOrder(root);
                 break;
         case 3: System.out.print("\nPostorder traversal: ");
                 postOrder(root);
                 break;
         }
      System.out.println();
      }
// -------------------------------------------------------------
   private void preOrder(Node localRoot)
      {
      if(localRoot != null)
         {
         System.out.print(localRoot.iData + " ");
         preOrder(localRoot.leftChild);
         preOrder(localRoot.rightChild);
         }
      }
// -------------------------------------------------------------
   private void inOrder(Node localRoot)
      {
      if(localRoot != null)
         {
         inOrder(localRoot.leftChild);
         System.out.print(localRoot.iData + " ");
         inOrder(localRoot.rightChild);
         }
      }
// -------------------------------------------------------------
   private void postOrder(Node localRoot)
      {
      if(localRoot != null)
         {
         postOrder(localRoot.leftChild);
         postOrder(localRoot.rightChild);
         System.out.print(localRoot.iData + " ");
         }
      }
// -------------------------------------------------------------
   public void displayTree()
      {
      Stack globalStack = new Stack();
      globalStack.push(root);
      int nBlanks = 32;
      boolean isRowEmpty = false;
      System.out.println(
      "......................................................");
      while(isRowEmpty==false)
         {
         Stack localStack = new Stack();
         isRowEmpty = true;

         for(int j=0; j<nBlanks; j++)
            System.out.print(' ');

         while(globalStack.isEmpty()==false)
            {
            Node temp = (Node)globalStack.pop();
            if(temp != null)
               {
               System.out.print(temp.iData);
               localStack.push(temp.leftChild);
               localStack.push(temp.rightChild);

               if(temp.leftChild != null ||
                                   temp.rightChild != null)
                  isRowEmpty = false;
               }
            else
               {
               System.out.print("--");
               localStack.push(null);
               localStack.push(null);
               }
            for(int j=0; j<nBlanks*2-2; j++)
               System.out.print(' ');
            }  // end while globalStack not empty
         System.out.println();
         nBlanks /= 2;
         while(localStack.isEmpty()==false)
            globalStack.push( localStack.pop() );
         }  // end while isRowEmpty is false
      System.out.println(
      "......................................................");
      }  // end displayTree()
// -------------------------------------------------------------
   }  // end class Tree
////////////////////////////////////////////////////////////////
class TreeApp
   {
   public static void main(String[] args) throws IOException
      {
      int value;
      Tree theTree = new Tree();

      theTree.insert(50, 1.5);
      theTree.insert(25, 1.2);
      theTree.insert(75, 1.7);
      theTree.insert(12, 1.5);
      theTree.insert(37, 1.2);
      theTree.insert(43, 1.7);
      theTree.insert(30, 1.5);
      theTree.insert(33, 1.2);
      theTree.insert(87, 1.7);
      theTree.insert(93, 1.5);
      theTree.insert(97, 1.5);

      while(true)
         {
         System.out.print("Enter first letter of show, ");
         System.out.print("insert, find, delete, or traverse: ");
         int choice = getChar();
         switch(choice)
            {
            case 's':
               theTree.displayTree();
               break;
            case 'i':
               System.out.print("Enter value to insert: ");
               value = getInt();
               theTree.insert(value, value + 0.9);
               break;
            case 'f':
               System.out.print("Enter value to find: ");
               value = getInt();
               Node found = theTree.find(value);
               if(found != null)
                  {
                  System.out.print("Found: ");
                  found.displayNode();
                  System.out.print("\n");
                  }
               else
                  System.out.print("Could not find ");
                  System.out.print(value + '\n');
               break;
            case 'd':
               System.out.print("Enter value to delete: ");
               value = getInt();
               boolean didDelete = theTree.delete(value);
               if(didDelete)
                  System.out.print("Deleted " + value + '\n');
               else
                  System.out.print("Could not delete ");
                  System.out.print(value + '\n');
               break;
            case 't':
               System.out.print("Enter type 1, 2 or 3: ");
               value = getInt();
               theTree.traverse(value);
               break;
            default:
               System.out.print("Invalid entry\n");
            }  // end switch
         }  // end while
      }  // end main()
// -------------------------------------------------------------
   public static String getString() throws IOException
      {
      InputStreamReader isr = new InputStreamReader(System.in);
      BufferedReader br = new BufferedReader(isr);
      String s = br.readLine();
      return s;
      }
// -------------------------------------------------------------
   public static char getChar() throws IOException
      {
      String s = getString();
      return s.charAt(0);
      }
//-------------------------------------------------------------
   public static int getInt() throws IOException
      {
      String s = getString();
      return Integer.parseInt(s);
      }
// -------------------------------------------------------------
   }  // end class TreeApp
////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级二级三级| 日韩精品中文字幕在线一区| 激情综合色丁香一区二区| 天天亚洲美女在线视频| 午夜一区二区三区视频| 亚洲va国产va欧美va观看| 亚洲成a人片综合在线| 亚洲国产精品麻豆| 青青草一区二区三区| 蜜桃视频第一区免费观看| 麻豆成人av在线| 国产精品资源网站| 91美女在线看| 欧美色图第一页| 欧美成人性战久久| 国产精品入口麻豆九色| 亚洲乱码国产乱码精品精小说 | av电影在线不卡| 91免费国产在线| 欧美疯狂做受xxxx富婆| 欧美精品一区二区不卡| 国产精品五月天| 亚洲成av人片在线观看无码| 日日噜噜夜夜狠狠视频欧美人| 韩国v欧美v亚洲v日本v| 91视频91自| 欧美一区二区网站| 中文字幕不卡一区| 午夜电影网亚洲视频| 国产乱人伦精品一区二区在线观看 | 成人av在线一区二区三区| 一本色道综合亚洲| 精品噜噜噜噜久久久久久久久试看| 国产亚洲精品久| 一区二区三区**美女毛片| 青青草国产成人99久久| av电影在线观看一区| 日韩午夜激情av| 一区二区视频在线看| 国产麻豆视频精品| 69av一区二区三区| 亚洲色图一区二区三区| 国产剧情在线观看一区二区| 欧美自拍偷拍午夜视频| 国产丝袜在线精品| 麻豆精品在线播放| 欧美午夜精品久久久久久孕妇| 久久久亚洲精华液精华液精华液 | 欧美午夜精品一区二区蜜桃| 久久精品一区八戒影视| 丝袜美腿亚洲色图| 91色乱码一区二区三区| 国产午夜亚洲精品不卡| 麻豆中文一区二区| 6080国产精品一区二区| 亚洲男人的天堂网| 从欧美一区二区三区| 久久综合一区二区| 看片网站欧美日韩| 91麻豆精品国产综合久久久久久| 国产精品灌醉下药二区| 国产91精品一区二区麻豆网站| 91精品在线观看入口| 亚洲国产精品久久久久婷婷884| 99精品欧美一区二区三区小说| 精品国产麻豆免费人成网站| 日韩福利视频网| 精品视频999| 五月婷婷久久丁香| 欧美人与性动xxxx| 亚洲gay无套男同| 欧美色图第一页| 亚洲国产一二三| 欧美精品v国产精品v日韩精品| 亚洲一二三四久久| 欧美日韩一区在线观看| 亚洲美女在线国产| 在线国产电影不卡| 亚洲成人激情社区| 欧美一区二区视频观看视频| 日韩黄色小视频| 精品国产1区二区| 国产精品影视网| 国产精品免费视频一区| 一本到三区不卡视频| 亚洲女人****多毛耸耸8| 在线国产电影不卡| 奇米一区二区三区| 精品日本一线二线三线不卡| 国产美女精品一区二区三区| 国产欧美日韩精品一区| 色婷婷精品大在线视频| 肉色丝袜一区二区| 久久综合色鬼综合色| 成人一区二区三区视频| 亚洲国产成人av| 日韩精品一区二区三区视频播放 | 欧美日韩三级视频| 青青草97国产精品免费观看无弹窗版 | 91视视频在线直接观看在线看网页在线看| 自拍偷拍国产亚洲| 欧美二区三区的天堂| 卡一卡二国产精品| 日韩理论片一区二区| 在线观看av一区二区| 久久精品999| 最新国产精品久久精品| 欧美一区三区二区| 成人av资源下载| 午夜精品一区二区三区三上悠亚| 久久久99精品久久| 91黄色激情网站| 久久99精品国产麻豆不卡| 国产精品每日更新| 日韩视频永久免费| 色婷婷综合久久久久中文| 久久精品72免费观看| 一区二区三区四区五区视频在线观看 | 亚洲va中文字幕| 国产精品午夜在线观看| 日韩欧美色电影| 在线国产电影不卡| 懂色av一区二区三区免费看| 亚洲第一激情av| 国产精品福利电影一区二区三区四区| 欧美日韩国产综合一区二区 | 青青草精品视频| 国产精品久久久久久久久免费樱桃 | 欧美国产乱子伦| 91精品国产综合久久久久久久| 成人动漫在线一区| 国产精品一线二线三线精华| 午夜一区二区三区视频| 亚洲精品视频在线观看免费| 久久久久国产成人精品亚洲午夜| 欧美日韩一区二区三区免费看| 成人18视频日本| 国产美女娇喘av呻吟久久| 青青草成人在线观看| 午夜电影一区二区三区| 亚洲一二三区视频在线观看| 亚洲色图都市小说| 国产精品伦理一区二区| 中文字幕乱码日本亚洲一区二区| 精品久久久网站| 精品裸体舞一区二区三区| 日韩亚洲电影在线| 欧美一级片在线| 欧美一级爆毛片| 69精品人人人人| 91精品国产免费| 91精品国产欧美一区二区成人 | 麻豆成人免费电影| 美洲天堂一区二卡三卡四卡视频 | 中文字幕在线不卡| 中文字幕在线观看不卡| 中文字幕一区二区三区不卡| 亚洲欧洲精品天堂一级| 亚洲少妇屁股交4| 一区二区三区四区视频精品免费| 亚洲男人的天堂av| 午夜精品久久久久久久蜜桃app| 亚洲一区二区三区影院| 日韩1区2区3区| 黄色日韩三级电影| 国产成人免费视频精品含羞草妖精| 国产精品69久久久久水密桃| 国产精品99久久久久久久vr | 视频在线在亚洲| 久久精品国产亚洲a| 国产精品一区二区视频| 91同城在线观看| 欧美日韩不卡一区| 精品久久久久久久久久久久久久久久久 | 欧美丰满高潮xxxx喷水动漫| 91精品国产综合久久久久久久| 久久在线免费观看| 亚洲精品视频自拍| 日本美女一区二区| 福利电影一区二区三区| 欧美视频中文一区二区三区在线观看 | 在线精品视频免费播放| 88在线观看91蜜桃国自产| 久久久久久久久久久99999| 国产精品久久二区二区| 亚洲成a人v欧美综合天堂 | 综合久久国产九一剧情麻豆| 亚洲黄网站在线观看| 精品无码三级在线观看视频| 成人性色生活片| 欧美精品一二三四| 国产精品情趣视频| 日产国产欧美视频一区精品 | 亚洲中国最大av网站| 国模无码大尺度一区二区三区| 99精品国产99久久久久久白柏| 欧美精品久久久久久久久老牛影院| 欧美—级在线免费片| 免费黄网站欧美| 欧美三级韩国三级日本三斤 |