1
- import { Tree , buchheim } from './Tree' ;
1
+ import { TreeNode , buchheim } from '@/lib/tree/Tree' ;
2
+
2
3
export function getTree ( n , algo = 0 , r = 0 ) {
3
4
if ( algo === 0 )
4
5
return buchheim ( fib ( n ) ) ;
@@ -13,7 +14,7 @@ export function getTree(n,algo=0,r=0){
13
14
}
14
15
15
16
function fib ( n ) {
16
- let tree = new Tree ( n , [ ] , n + "" ) ;
17
+ let tree = new TreeNode ( n , [ ] , n + "" ) ;
17
18
if ( n < 2 ) return tree ;
18
19
tree . children . push ( fib ( n - 1 ) ) ;
19
20
tree . children . push ( fib ( n - 2 ) ) ;
@@ -22,7 +23,7 @@ function fib(n){
22
23
}
23
24
24
25
function sib ( n ) {
25
- let tree = new Tree ( n , [ ] ) ;
26
+ let tree = new TreeNode ( n , [ ] ) ;
26
27
if ( n < 3 ) return tree ;
27
28
tree . children . push ( sib ( n - 2 ) ) ;
28
29
tree . children . push ( sib ( n - 3 ) ) ;
@@ -32,36 +33,36 @@ function sib(n){
32
33
33
34
function NcR ( n , r ) {
34
35
if ( r > n )
35
- return new Tree ( - 1 , [ ] , "(" + n + "," + r + ")" ) ;
36
+ return new TreeNode ( - 1 , [ ] , "(" + n + "," + r + ")" ) ;
36
37
37
38
if ( n === r )
38
- return new Tree ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
39
+ return new TreeNode ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
39
40
40
41
if ( r === 0 )
41
- return new Tree ( 1 , [ ] , "(" + n + "," + r + ")" ) ; ;
42
+ return new TreeNode ( 1 , [ ] , "(" + n + "," + r + ")" ) ; ;
42
43
43
44
// nCr(n, r) = nCr(n - 1, r - 1) + nCr(n - 1, r)
44
- let tree = new Tree ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
45
+ let tree = new TreeNode ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
45
46
tree . children . push ( NcR ( n - 1 , r - 1 ) ) ;
46
47
tree . children . push ( NcR ( n - 1 , r ) ) ;
47
48
tree . node = tree . children [ 0 ] . node + tree . children [ 1 ] . node ;
48
49
return tree ;
49
50
}
50
51
51
52
function derangement ( n ) {
52
- if ( n == 0 ) return new Tree ( 1 , [ ] , n + "" ) ;
53
- if ( n == 1 ) return new Tree ( 0 , [ ] , n + "" ) ;
54
- let tree = new Tree ( 0 , [ ] , n + "" ) ;
53
+ if ( n == 0 ) return new TreeNode ( 1 , [ ] , n + "" ) ;
54
+ if ( n == 1 ) return new TreeNode ( 0 , [ ] , n + "" ) ;
55
+ let tree = new TreeNode ( 0 , [ ] , n + "" ) ;
55
56
tree . children . push ( derangement ( n - 1 ) ) ;
56
57
tree . children . push ( derangement ( n - 2 ) ) ;
57
58
tree . node = ( n - 1 ) * ( tree . children [ 0 ] . node + tree . children [ 1 ] . node ) ;
58
59
return tree ;
59
60
}
60
61
61
62
function bigmod ( n , r ) {
62
- if ( r === 0 ) return new Tree ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
63
- if ( r === 1 ) return new Tree ( n , [ ] , "(" + n + "," + r + ")" ) ;
64
- let tree = new Tree ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
63
+ if ( r === 0 ) return new TreeNode ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
64
+ if ( r === 1 ) return new TreeNode ( n , [ ] , "(" + n + "," + r + ")" ) ;
65
+ let tree = new TreeNode ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
65
66
if ( r % 2 === 1 ) {
66
67
tree . children . push ( bigmod ( n , ( r - 1 ) / 2 ) ) ;
67
68
tree . children . push ( bigmod ( n , ( r - 1 ) / 2 ) ) ;
@@ -77,10 +78,10 @@ function bigmod(n,r){
77
78
}
78
79
79
80
function stirling2 ( n , r ) {
80
- if ( n === r ) return new Tree ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
81
- if ( r === 0 ) return new Tree ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
81
+ if ( n === r ) return new TreeNode ( 1 , [ ] , "(" + n + "," + r + ")" ) ;
82
+ if ( r === 0 ) return new TreeNode ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
82
83
83
- let tree = new Tree ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
84
+ let tree = new TreeNode ( 0 , [ ] , "(" + n + "," + r + ")" ) ;
84
85
tree . children . push ( stirling2 ( n - 1 , r ) ) ;
85
86
tree . children . push ( stirling2 ( n - 1 , r - 1 ) ) ;
86
87
tree . node = tree . children [ 0 ] . node * r + tree . children [ 1 ] . node ;
0 commit comments