Order[dog, cat]

Here's a tree structure for a dictionary.

put[name_, definition_, tree_] := 
        Module[{}, 
If[    Length[tree] == 0,  
            Return[{{name, 
                  definition}, {}, {}}]   ]; 
If[   Order[name,  tree[[1]][[1]]] == 1,    Return[ 
              ReplacePart[tree,  put[name, definition, tree[[2]]],  
                2   ]]]; 
If[   Order[
                name,  tree[[1]][[1]]] == -1,  
            Return[ ReplacePart[tree, 
                put[name, definition, tree[[3]]],  
                3   ]]]; 
Return[tree];    (* 
            don' t add duplicate definitions *) 
];
lookup[name_, tree_] := 
        Module[{}, 
If[ Length[tree] == 0,  
            Return[" - not found - "]]; 
If[ 
            Order[name, tree[[1]][[1]]] == 0,  
            Return[tree[[1]][[2]]]]; 
If[ 
            Order[name, tree[[1]][[1]]] == 1,  
            Return[ lookup[name,  tree[[2]]]]]; 
If[ 
            Order[name, tree[[1]][[1]]] == -1,  
            Return[ lookup[name,  
                tree[[3]]]]]; 
Return[" oops - error \
"];
];

dict = {};

dict = put[cat,  "purr", {}]

dict = put[dog, "bark", dict]

dict = put[ant, "bug", dict]

dict = put[zebra, "stripes", dict]

dict // TreeForm

lookup[cat, dict]

lookup[lion, dict]