木の高さを見つけるための事前注文トラバーサルを思いつきました。
void preHeight(node * n)
{
int max = 0,c = 0;
while(1)
{
while(n)
{
push(n);
c++;
if(c>max)
max = c;
n= n->left;
}
if (isStackEmpty())
return max;
n = pop();
if(n->right) //Problem point
c--;
n=n->right;
}
}
高さは正確ですが、方法が正しいかどうかはわかりません。私がしていることはc
、一番左のノードまでカウンターをインクリメントし、上に移動した場合は、右に移動する必要がある場合に備えてカウンターを減らし、演習全体を繰り返すことです。あれは正しいですか?