\begin{tikzpicture}[
    node distance=1cm and 1.1cm,
    every node/.style={align=center},
    decision/.style={diamond, aspect=2, text centered, draw=black, fill=orange!20},
    block/.style={rectangle, thick, minimum width=2.5cm, minimum height=1.2cm, draw=black, fill=gray!10},
    startstop/.style={rectangle, rounded corners, minimum width=2.5cm, minimum height=1cm, text centered, draw=black, fill=blue!10},
    line/.style={draw, thick, -{Latex[length=3mm]}},
]

\node[startstop] (A) {Start};
\node[decision, below=of A] (B) {Current Node has\\ not tried mutations?};
\node[block, right=of B] (C) {Create new Node as\\ child and make it current};
\node[startstop, above=of C] (n1) {Return a not\\ tried mutation type};
\node[block, below=of B] (D) {Traverse children};
\node[decision, below=of D] (n2) {Child function\\ execution failed?};
\node[decision, right=of n2] (n3) {Child has not\\ tried mutations?};
\node[startstop, above=of n3] (n4) {Make child current and\\ return its mutation type};
\node[decision, below=of n3] (n5) {Is mutation type\\ of child None?};
\node[block, left=of n5] (n6) {Set NoneNode to child};

\path[line] (A) -- (B);
\path[line] (B) -- node[above] {Yes} (C);
\path[line] (C) -- (n1);
\path[line] (B) -- node[left] {No} (D);
\path[line] (D) -- (n2);
\path[line] (n2) -- node[left] {Yes} (D);
\path[line] (n2) -- node[above] {No} (n3);
\path[line] (n3) -- node[right] {Yes} (n4);
\path[line] (n3) -- (n5);
\path[line] (n5) -- node[above] {Yes} (n6);

\end{tikzpicture}