Skip to content

Commit acb9519

Browse files
committed
refactor: recursive tree components
1 parent ec80445 commit acb9519

File tree

6 files changed

+26
-50
lines changed

6 files changed

+26
-50
lines changed

src/app/recursion-tree/edge.jsx renamed to src/app/common/tree/edge.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {Component} from 'react';
22

3-
class Edge extends Component {
3+
class TreeEdge extends Component {
44
constructor() {
55
super();
66
this.state={
@@ -91,4 +91,4 @@ class Edge extends Component {
9191
}
9292
}
9393

94-
export default Edge;
94+
export default TreeEdge;

src/app/recursion-tree/vertex.jsx renamed to src/app/common/tree/vertex.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {Component} from 'react';
22

3-
class Vertex extends Component {
3+
class TreeVertex extends Component {
44

55
constructor() {
66
super();
@@ -80,4 +80,4 @@ function sleep(ms) {
8080
return new Promise(resolve => setTimeout(resolve, ms));
8181
}
8282

83-
export default Vertex;
83+
export default TreeVertex;

src/app/recursion-tree/bst.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/app/recursion-tree/canvasSVG.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component } from 'react';
2-
import Edge from "./edge";
3-
import Vertex from "./vertex";
2+
import TreeEdge from "../common/tree/edge";
3+
import TreeVertex from "../common/tree/vertex";
44

55
class CanvasSvg extends Component {
66
constructor() {
@@ -28,7 +28,7 @@ class CanvasSvg extends Component {
2828
{
2929
this.props.edges.map((edge, cellidx) => {
3030
return (
31-
<Edge
31+
<TreeEdge
3232
key={cellidx}
3333
id={cellidx}
3434
pos={{
@@ -42,7 +42,7 @@ class CanvasSvg extends Component {
4242
{
4343
this.props.vertices.map((vertex, cellidx) => {
4444
return (
45-
<Vertex
45+
<TreeVertex
4646
key={cellidx}
4747
id={cellidx}
4848
current={this.props.current === cellidx}

src/app/recursion-tree/fib.jsx

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import {Tree,buchheim} from './Tree';
1+
import {TreeNode,buchheim} from '@/lib/tree/Tree';
2+
23
export function getTree(n,algo=0,r=0){
34
if(algo === 0)
45
return buchheim( fib(n) );
@@ -13,7 +14,7 @@ export function getTree(n,algo=0,r=0){
1314
}
1415

1516
function fib(n){
16-
let tree = new Tree(n,[],n+"");
17+
let tree = new TreeNode(n,[],n+"");
1718
if( n <2 ) return tree;
1819
tree.children.push( fib(n-1) );
1920
tree.children.push( fib(n-2) );
@@ -22,7 +23,7 @@ function fib(n){
2223
}
2324

2425
function sib(n){
25-
let tree = new Tree(n,[]);
26+
let tree = new TreeNode(n,[]);
2627
if( n <3 ) return tree;
2728
tree.children.push( sib(n-2) );
2829
tree.children.push( sib(n-3) );
@@ -32,36 +33,36 @@ function sib(n){
3233

3334
function NcR(n,r){
3435
if (r > n)
35-
return new Tree(-1,[],"("+n+","+r+")");
36+
return new TreeNode(-1,[],"("+n+","+r+")");
3637

3738
if (n === r)
38-
return new Tree(1,[],"("+n+","+r+")");
39+
return new TreeNode(1,[],"("+n+","+r+")");
3940

4041
if (r === 0)
41-
return new Tree(1,[],"("+n+","+r+")");;
42+
return new TreeNode(1,[],"("+n+","+r+")");;
4243

4344
// 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+")");
4546
tree.children.push( NcR(n-1,r-1) );
4647
tree.children.push( NcR(n-1,r) );
4748
tree.node = tree.children[0].node+tree.children[1].node;
4849
return tree;
4950
}
5051

5152
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+"");
5556
tree.children.push( derangement(n-1) );
5657
tree.children.push( derangement(n-2) );
5758
tree.node = (n-1)*(tree.children[0].node+tree.children[1].node);
5859
return tree;
5960
}
6061

6162
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+")");
6566
if( r%2 === 1 ){
6667
tree.children.push( bigmod(n,(r-1)/2 ) );
6768
tree.children.push( bigmod(n,(r-1)/2) );
@@ -77,10 +78,10 @@ function bigmod(n,r){
7778
}
7879

7980
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+")");
8283

83-
let tree = new Tree(0,[],"("+n+","+r+")");
84+
let tree = new TreeNode(0,[],"("+n+","+r+")");
8485
tree.children.push( stirling2(n-1,r) );
8586
tree.children.push( stirling2(n-1,r-1) );
8687
tree.node = tree.children[0].node*r+tree.children[1].node;

src/app/recursion-tree/Tree.js renamed to src/lib/tree/Tree.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// draw tree class functions start :/
22

33

4-
export class Tree{
4+
export class TreeNode {
55
constructor(node=0,children=[],label="") {
66
this.id = 0;
77
this.node = node;

0 commit comments

Comments
 (0)