1. A method for performing a lookup of a packet against an access control list, comprising: receiving an access control list including a set of filtering rules; identifying a decision point to partition the access control list into two or more complementary sets, wherein the decision point is identified such that the access control list is partitioned into nearly even groups, and wherein the decision point is identified to reduce the number of replicated filtering rules and minimizing memory utilization; forming a tree for each complementary set, wherein the tree has one or more end nodes including a subset of filtering rules, and an internal decision node representing the decision point; and traversing the two or more trees when a packet arrives and comparing header information from the packet against each of the two or more trees and determining a match, wherein the decision point in the internal decision nodes is used to guide the packet down the trees to an end node that includes at least one filtering rule that is included in the set of filtering rules.