1. A method of decoding comprising: converting a data flow graph relating to a predetermined polar code to a tree graph comprising rate-zero nodes, rate-1 nodes, and rate-R nodes; replacing a rate-R node within the binary tree with a maximum likelihood node when predetermined conditions are met thereby replacing a sub-tree of the tree graph with a single maximum likelihood node.