1.通常の再帰
1 ツリーノード* searchBST(ツリーノード*根、INT ヴァル){ 2 であれば(!ルート) 3 リターンnullptr。 4 もし(ヴァル> root-> ヴァル) 5 { 6 ルート= searchBST(root-> 右、ヴァル)。 7 } 8 そう であれば(ヴァル<root-> ヴァル) 9 { 10 ルート= searchBST(root-> 左、ヴァル)。 11 } 12 リターンルート。 13 }
注文再帰2.
1 ツリーノード* searchBST(ツリーノード*根、INT ヴァル){ 2 であれば(!ルート) 3 リターンnullptr。 4 ツリーノード* RES = searchBST(root-> 左、ヴァル)。 5 なら(RES) 6つの リターンRES。 7 他に あれば(root->ヴァル> val)で 8 リターンnullptr; 9 他に あれば(root->ヴァル== val)で 10 リターンルート。 11 ツリーノード* RES = searchBST(root-> 右、ヴァル)。 12 リターンのres; 13 }
3.反復
1ツリーノード* searchBST(ツリーノード*根、INT ヴァル){ 2 ながら(ルート) 3 { 4 もし(root->ヴァル> val)で 5 ルート= root-> 左。 6 そう であれば(root->ヴァル< val)で 7 ルート= root-> 右。 8 他の 9 リターンルート。 10 } 11 リターンルート。 12 }