Skip to content

Instantly share code, notes, and snippets.

View alexandervasyuk's full-sized avatar

alexandervasyuk

View GitHub Profile
function Trie() {
this.head = {
key : ''
, children: {}
}
}
Trie.prototype.add = function(key) {
var curNode = this.head
@alexandervasyuk
alexandervasyuk / trie.js
Created July 17, 2015 22:24
Trie implementation
function Trie() {
this.head = {
key : ''
, children: {}
}
}
Trie.prototype.add = function(key, value) {
var curNode = this.head
@alexandervasyuk
alexandervasyuk / trie.js
Created July 17, 2015 22:23
Trie implementation
function Trie() {
this.head = {
key : ''
, children: {}
}
}
Trie.prototype.add = function(key, value) {
var curNode = this.head
@alexandervasyuk
alexandervasyuk / doublylinkedlist
Created October 18, 2014 03:21
remove element from double linked list
public class DoublyLinkedList {
Node head;
Node tail;
public Node getHead() {
return head;
}
public Node getTail() {
return tail;
@alexandervasyuk
alexandervasyuk / infixBinaryTreePart2
Created October 8, 2014 23:57
infixBinaryTreePart2
function Stack() {
this.stack = new Array();
}
Stack.prototype = {
isEmpty: function() {
return this.stack.length == 0;
},
pop: function() {
@alexandervasyuk
alexandervasyuk / infixBinaryTreeParentheseFunctionality
Created October 8, 2014 23:55
parenthesis functionality infix binary tree
if (token == '(') {
operatorStack.push(token);
} else if (token == ')') {
while(operatorStack.peek() != '(') {
var subtree = createSubtree(operatorStack.pop(), null);
outputStack.push(subtree);
}
operatorStack.pop();
}
@alexandervasyuk
alexandervasyuk / infixToBinaryUpdateTree
Created October 8, 2014 23:18
infixToBinaryUpdateTree
var updateTree = function() {
var operator = operatorStack.pop(),
output = outputStack.pop();
if (head == null) {
head = new BinaryTreeNode(operator);
left = outputStack.pop();
head.left = left instanceof BinaryTreeNode ? left : new BinaryTreeNode(left);
head.right = output instanceof BinaryTreeNode ? output : new BinaryTreeNode(output);
} else {
var subtree = head;
@alexandervasyuk
alexandervasyuk / infixToBinaryCreateSubtree
Created October 8, 2014 23:16
infixToBinaryCreateSubtree
var createSubtree = function createSubtree(operator, tree) {
if (tree == null) {
var right = outputStack.pop(),
left = outputStack.pop();
tree = new BinaryTreeNode(operator);
tree.right = right instanceof BinaryTreeNode ? right : new BinaryTreeNode(right);
tree.left = left instanceof BinaryTreeNode ? left : new BinaryTreeNode(left);
} else {
var subtree = tree,
left = outputStack.pop();
@alexandervasyuk
alexandervasyuk / infixBinaryTreeLogic
Last active August 29, 2015 14:07
infixBinaryTreeLogic
...
if (token.length == 1 && isNaN(token)) {
var operator = createOperator(token);
if (!operatorStack.isEmpty() && operator.lessOrEqualInPrecedenceTo(operatorStack.peek())) {
var subtree = createSubtree(operatorStack.pop(), null);
outputStack.push(subtree);
}
operatorStack.push(operator);
} else {
@alexandervasyuk
alexandervasyuk / infixToBinaryParsing
Created October 8, 2014 22:58
infixToBinary Parsing
for (var s = 0; s < input.length; ) {
var token;
if (isNaN(input[s])) {
token = input[s];
s+=1;
} else {
var i = s + 1;
while(i < input.length && !isNaN(input[i])) {
i+=1;
}