Example #1
0
        /// <summary>
        /// Find by key, return the lowerest node...
        /// </summary>
        /// <param name="currentNode"></param>
        /// <param name="Key"></param>
        /// <returns></returns>
        public static MemoryTreeNode FindLeafByKey(TreeFile Tree, MemoryTreeNode currentNode, byte[] Keybytes)
        {
            NodePointer pointer = currentNode.TreeNode.FindPointer(Keybytes);

            if (pointer.PositionPointer == 0)
            {
                Tree.CreateFirstLeaf(currentNode.TreeNode);
                NodeChange(Tree, currentNode);
                return(FindLeafByKey(Tree, Tree.RootCache, Keybytes));
            }

            MemoryTreeNode foundnode = GetOrLoadNode(Tree, currentNode, pointer);

            if (foundnode.TreeNode.TypeIndicator == EnumValues.TypeIndicator.leaf)
            {
                return(foundnode);
            }
            else
            {
                return(FindLeafByKey(Tree, foundnode, Keybytes));
            }
        }