Insättning av 4 2 1 6 3 7 5 ger trädet
4 2 6 1 3 5 7 |
Insättning av 5 7 3 6 1 4 2 ger trädet
5 3 7 1 4 6 2 |
Inordning + nybygge
Båda träden ger 1 2 3 4 5 6 7 8 i inordning
Nya trädet bli en tarm, ytterst obalanserat.
1 2 3 4 5 6 7 |
Preordning + nybygge
Första trädet i preordning ger 4 2 1 3 6 5 7 och nytt träd blir
4 2 6 1 3 5 7 |
Andra trädet i preorder ger 5 3 1 2 4 7 6 och nytt träd blir
5 3 7 1 4 6 2 |
Postorder + nybygge
Första trädet i postorder ger 1 3 2 5 7 6 4 och nytt träd blir
1 3 2 5 4 7 6 |
2 1 4 3 6 5 7 |
def gcd(m, n): if m%n == 0: return n else: return gcd(n, m % n) |
def fib(n): if n <= 1: return n else: return fib(n-1) + fib(n-2) |
def fib(n): f0 = 0 f1 = 1 for i in range(n-1): f2 = f1 + f0 f0 = f1 f1 = f2 return f1 |
def summa(p): # Om den står utanför klassen slipper man self if p == None: return 0 else: return int(p.value)+summa(p.left)+summa(p.right) class Bintree - - - def sum(self): return summa(self.rot) |
def height(p): if p == None: return -1 else: h1 = height(p.left) h2 = height(p.right) return max(h1,h2) + 1 |
Linjär k * N N = 500 k * 500 = x ------------- N = 100 k * 100 = 1/2 5 x = - = 2.5 ms (5x längre) 2 O(NlogN) k * NlogN N = 500 k * 500 * log(500) = x ------------------------ N = 100 k * 100 * log(100) = 1/2 5 * log(500) x = ------------ = 3.37 ms (6.74x längre) 2 * log(100) kvadratisk k * N * N N = 500 k * 500 * 500 = x ------------------- N = 100 k * 100 * 100 = 1/2 5 * 5 x = ----- = 12.5 ms (25x längre) 2 kubisk k * N * N * N N = 500 k * 500 * 500 * 500 = x ------------------------- N = 100 k * 100 * 100 * 100 = 1/2 5 * 5 * 5 x = --------- = 62.5 ms (125x längre) 2 |