Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
 public AVEntryTree(AVEntry root)
 {
     this.root = new AVEntryTreeNode(root);
     size      = 1;
 }
Esempio n. 9
0
 public AVEntryTree()
 {
     root = null; size = 0;
 }
Esempio n. 10
0
 public AVEntryTreeNode(AVEntry entry, byte height = 0)
 {
     data = entry; lNode = null; rNode = null; this.height = height;
 }