## Puerto Family Tree Builder SAAS

Building a Family Tree with Puerto Family Tree PHP Script.
It is more than just a family tree. A new home for family memories.

Make your family tree live with Puerto Family Tree and do not leave it just a memory hanging. build it with the participation of everyone and make it stretch to infinity.

.

Posted on Categories Articles

## algorithms – Augment the tree data structure for disjoint sets to implement the PRINT operation

Consider the following new operation for disjoint sets
PRINT(x): print every element in S_x the set containing x

One Approach that I found but couldn’t figure out completely :
In addition to tree we store a linked list. And each node in the tree in addition to the element
the tree nodes also stores the pointer to element in the linked list.

UNION(x,y) : We union the x and y as usual. But we join the linked list for x and y
So here I could simply point the tail of one list to the head of another.

Print(x) : we obtain the s=FIND-SET(x) and print all the elements of the linked list pointed to
by s. This will print all the elements.
Now for this to work in the UNION to merge the linked list has to be done in a proper way so that
the root of the tree always point to the beginning of the list.
This can be done like when I merge Tree2 into Tree1 that is point the root of Tree1 to root of
Tree2 then I point the tail of Tree2 list to head of Tree1 list. In the way the merged list
will start with the root node of the tree (or the extra element stored in the root of tree)

Will this approach work or there are some flaws in this ?

Confusion points :

1. MAKE-SET(x) It’s always mentioned that it takes O(1) time. As we have to create a single node
But what if the element x is already there. Then we don’t create the node we have to first
execute FIND-SET(x) and see if it returns anything and then execute MAKE-SET(x).
Posted on Categories Articles

## programming – How do I write a Prolog program that implements the following predicates for an AVL tree

An AVL tree is a binary tree for which a special condition holds throughout the tree, namely, that at every node the height of the left and right subtrees differ by at most 1. A binary tree can be defined in terms of 2 predicates:

empty, the empty binary tree
bt(N,T1,T2) that is true if N is the root of a binary tree with left subtree T1 and right subtree T2, where all the items in T1 are less than or equal to N and all the items in T2 are greater than N.

How do I write a Prolog program that implements the following predicates for an AVL tree:

insert(I,T1,T2) is true if T2 is the AVL tree resulting from I being inserted into an AVL tree T1.
display(T) is always true prints the AVL tree to the display.

Posted on Categories Articles

## Are there any generic Abstract Syntax Tree Query Languages (specification)?

While designing compiler specifications I noticed that having some sort of language to further validate and manipulate the AST’s gotten from a Parser would be useful in separating concerns. The overarching goal is to create a maintainable language stack specification. So far I have worked out generic lexer and parser phases: instead of a defined ANTLR ruleset I have a specification for any ruleset. I wish to do the same for further validation of the AST’s (double variable name declarations, non-existing variables etc). While not a hard requirement it would be excellent if this tool is also able to manipulate the AST, similar to database queries.

I went looking for existing query languages or AST manipulation syntax and found the following: TreeQL, SPARQL, Neo4j, SBQL, JSONIQ, CRAQL, astquery.io, AST Query Engine, Tregex & Tsurgeon (still inquiring into these two) and SMARTS.
JSONIQ looked promising but would bind the specification to representing AST’s as JSON. The other options either do not support manipulation or are otherwise too restrictive.
I’d be happy to hear if someone can point me to a Tree/AST manipulation tool/query language (or even better, specification). Thanks in advance.

Posted on Categories Articles

## 3 controls on the tree – select, expand, open

We have a tree with one click to select and double click to expand. This works well for our users and is something that would be better to keep unchanged. Now we need to add another action to some of parent elements – to open this parent’s content in a new window (this contains not only child elements, but also additional info about the parent). What could be the best option for this?

Considered solutions:

A) Add “open” to the action bar – not ideal, because an action which is detached from its object may be not obvious and users may not look at the action bar. B) Add a button on the parent element – if add it on every element it will be too many buttons. Maybe add to only the selected one, then the question is where to place it. ## Why does the Huffman coding algorithm produce a valid tree?

I am not asking about the Huffman Code, but the most widely described algorithm for generating one, also described on the english wikipedia: https://en.wikipedia.org/wiki/Huffman_coding#Compression

Now, I am not really concerned with the code being optimal or not, because many proofs for this can be found, but there is one thing that bothers me – why can I be sure, that for any path on the Huffman Code tree, no string constructed from labels is a prefix of another string in the tree?

Considering a simple tree (source: http://homes.sice.indiana.edu/yye/lab/teaching/spring2014-C343/huffman.php): It has these codes:
E – 0
U – 10
D – 01
L – 110
C – 1110
M – 11111
Z – 11110
K – 11111,
and it is obvious, that none of these codes is a prefix of another. However, I am looking for a general proof that this is true for any Huffman tree, which for some reason I am unable to find. I would be grateful for any sources.

Posted on Categories Articles

## python – Preorder and Inorder into Binary Tree

``````class Node:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right

def inorderTraversal(root):

if root is None:
return

inorderTraversal(root.left)
print(root.data, end=' ')
inorderTraversal(root.right)

def preorderTraversal(root):

if root is None:
return

print(root.data, end=' ')
preorderTraversal(root.left)
preorderTraversal(root.right)

def construct(start, end, preorder, pIndex, dict):

# base case
if start > end:
return None, pIndex

root = Node(preorder(pIndex))
pIndex = pIndex + 1

index = dict(root.data)

root.left, pIndex = construct(start, index - 1, preorder, pIndex, dict)

root.right, pIndex = construct(index + 1, end, preorder, pIndex, dict)

return root, pIndex

def constructTree(inorder, preorder):

dict = {}
for i, e in enumerate(inorder):
dict(e) = i

pIndex = 0

return construct(0, len(inorder) - 1, preorder, pIndex, dict)(0)

if __name__ == '__main__':

inorder = (4, 2, 1, 7, 5, 8, 3, 6)
preorder = (1, 2, 4, 3, 5, 7, 8, 6)

root = constructTree(inorder, preorder)

print("The inorder traversal is ", end='')
inorderTraversal(root)

preorderTraversal(root)
``````

I have this code which construct the binary tree, but in no way it can display the tree in the terminal. It is hard to do! Is there anyone here who could add a method which can display the binary tree in a terminal?

For the above example, it might look like

Binary Tree ## graphs – Algorithm to find a new spanning tree of G

Here is a problem that I recently encountered and I am having trouble with coming up with an algorithm,.

Suppose you are given an undirected weighted graph G and a minimum spanning tree T of G. Now an edge e’s weight has been updated. Design an algorithm to find the new spanning tree of G. Consider both the cases that e’s weight is increased and is decreased.

Any help on how to approach this problem would be greatly appreciated, not sure if Prim’s will help here…

## graphs – Prune and search Algorithm for Generating a Bottleneck Spanning Tree

I’m trying to wrap my head around a prune-and-search algorithm for returning a bottleneck spanning tree, currently I’m selecting the median weight of all the edges, then divide the original graph G into two graphs containing the edges which are less than or equal to the median or greater than.

After separating the graphs, I test the median weight against the original graph (G) to see if it is a bottleneck value. I’m stuck on what to do, if the median is not a bottleneck value, I was thinking maybe I could compact the graph of edges with weights less than the median – but the cut of a compacted graph would still have the weights so the median wouldn’t change. I’m thinking I need to form an MST at some point as well?

So far I have something like:

``````def F(G):
m = find_avg_weight_of_edges(G)
G_le_m = get_g_w_edge_weight_less_than_or_eqal_to(G,m)
G_gt_m = get_g_w_edge_weight_greater_than(G,m)
if is_bottleneck_value(G,x):
T = F(G_le_m)
else:
# note quite sure what to do...
# I can't remove the less than or equal to edges
# since they are needed to make up the MST
# but if I don't remove them m won't change
# maybe some kind of reduce/scc function?
return T
``````

Posted on Categories Articles

## How find the depth level of Binary search tree

How find the depth level of Binary search tree – Computer Science Stack Exchange