spf tree algorithm