/// <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)); } }