PythonやC#のリスト(配列)を使って関数型と同じアルゴリズムで書いてしまうと
>>421の指摘している理由によって効率がわるい
関数的なリストでは探索木が木として保持されるが
配列ではそれぞれの枝毎にルートからの配列を持つことになり無駄
この程度のサイズでは無視できる範疇だけれども

C++の方法は素直な深さ優先/バックトラッキングで
現在探索中の枝の状態しか持たないのでメモリ効率は最善
一方関数型の方法は、抽象度が高く並列化もしやすいはず

という感じですかね

俺もCythonまで持ち出して特定の言語でパフォーマンスチューニングを
延々やる意味がわからない
興味がある人は並列化を試すといいのでは