C言語によるアルゴリズムとデータ構造
戻る
演習10-2の解答
関数
FreeTree
を以下のように実現するとどうなるかを説明せよ。
void
FreeTree
(
BinNode
*
p
) {
if
(
p
!=
NULL
) {
FreeTree
(
p
->
left
)
;
free
(
p
)
;
FreeTree
(
p
->
right
)
; } }
この実現は誤りです。
現在着目しているノードである
p
を解放してしまうと、
p
->
right
に正しくアクセスできなくなるからです(当然
p
->
right
の指す記憶域の解放は正しく行えません)。
戻る