private void lbNames_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (lbNames.SelectedItem == null) { return; } string key = lbNames.SelectedItem.ToString(); key = key.Split(':')[1]; AVEntryTreeNode node = entryList.findNode(key); if (node != null) { tbInfo.Text = node.getInfo(); } }
public void insertNode(AVEntry entry) { if (root == null) { root = new AVEntryTreeNode(entry); size++; return; } if (keyComp(root.getKey(), entry.getStartBits()) == 1) // entry > root { root.rNode = insertNode(root.rNode, entry); } else { root.lNode = insertNode(root.lNode, entry); } root = treeBalance(root); }
private AVEntryTreeNode insertNode(AVEntryTreeNode node, AVEntry entry) { if (node == null) { size++; return(new AVEntryTreeNode(entry)); } if (keyComp(node.getKey(), entry.getStartBits()) == 1) // entry > node { node.rNode = insertNode(node.rNode, entry); } else { node.lNode = insertNode(node.lNode, entry); } node = treeBalance(node); return(node); }
private int heightDiff(AVEntryTreeNode node) { if (node.lNode == null && node.rNode == null) { return(0); } if (node.lNode == null) { return(0 - node.rNode.height); } else if (node.rNode == null) { return(node.lNode.height); } else { return(node.lNode.height - node.rNode.height); } }
public List <string> getAllNames(AVEntryTreeNode entry) { List <string> names = new List <string>(); List <string> namesLeft, namesRight; if (entry == null) { return(null); } names.Add(entry.getName()); if ((namesLeft = getAllNames(entry.lNode)) != null) { names.AddRange(namesLeft); } if ((namesRight = getAllNames(entry.rNode)) != null) { names.AddRange(namesRight); } return(names); }
private AVEntryTreeNode findNode(byte[] key, AVEntryTreeNode node) { int res = keyComp(node.getKey(), key); if (res == 0) { return(node); } else if (res == 1 && node.rNode != null) { return(findNode(key, node.rNode)); } else if (res == -1 && node.lNode != null) { return(findNode(key, node.lNode)); } else { return(null); } }
private AVEntryTreeNode treeBalance(AVEntryTreeNode node) { fixHeight(node); if (heightDiff(node) == 2) { if (node.lNode != null && heightDiff(node.lNode) < 0) { node.lNode = rotateLeft(node.lNode); } node = rotateRight(node); } if (heightDiff(node) == -2) { if (node.rNode != null && heightDiff(node.rNode) > 0) { node.rNode = rotateRight(node.rNode); } node = rotateLeft(node); } return(node); }
public AVEntryTree(AVEntry root) { this.root = new AVEntryTreeNode(root); size = 1; }
public AVEntryTree() { root = null; size = 0; }
public AVEntryTreeNode(AVEntry entry, byte height = 0) { data = entry; lNode = null; rNode = null; this.height = height; }