zoukankan      html  css  js  c++  java
  • BST(Binary Search Tree)

    Definition: see wiki http://en.wikipedia.org/wiki/Binary_search_tree

     1 /*
     2     This look up is a fast operation because you eliminate the half
     3     the nodes from your search on each iteration by choose to follow the
     4     left or right of the sub-tree. In the worst case, you will know whether
     5     the lookup was successful by the time there is only one node left to
     6     search. Therefore, the running time of the lookup is equal to the number
     7     of times that you can halve n nodes before you get to 1. This number, x,
     8     is the same as the number of times you can double 1 before reach n, and it can
     9     be expressed as 2^x = n. You can find x using logarithm. So the Time complexity
    10     if Theta(log(n))
    11      */
    12     public TreeNode lookUp(TreeNode root, int val){
    13     //Note: this method only applies to BST(Binary search tree)
    14         while(root!=null){
    15             int cur_val = root.val;
    16             if(val == cur_val)
    17                 break;
    18             if(cur_val<val)
    19                 root = root.left;
    20             else // cur_val > val, we search for the
    21                 root = root.right;
    22         }
    23         return root;
    24     }
     1     //Recursion version of the look_up 
     2     public TreeNode lookUp_recursion(TreeNode root, int val){
     3         if(root == null)
     4             return null;
     5         int current_val = root.val;
     6         if(current_val == val)
     7                 return root;
     8         if(current_val<val)
     9             return lookUp_recursion(root.left,val);
    10         else
    11             return lookUp_recursion(root.right,val);
    12     }

    Deletion and Insertion

      Without goint into too much detail(as the special cases get very nasty), it is also possible to delete and insert into a balanced BST in log(n)

    Other Important Properties

      Smallest element: It's possible to obtain the smallest element by following all the left children.

      Largest element: To obtain the largest element, we could follow all the right children

  • 相关阅读:
    POJ 1753(1)
    2015.12 杭电校赛 Bitwise Equations
    codeforces B
    POJ2387 水水最短路
    CodeForces 337C SDUT秋季训练--周赛(10.31)
    HDU 1241
    POJ 3126 Prime Path
    HDU 2612
    POJ 1426 Find The Multiple
    day94 flask-session 表单验证 信号 SQLALchemy
  • 原文地址:https://www.cnblogs.com/Altaszzz/p/3700542.html
Copyright © 2011-2022 走看看