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
|