1

木の高さを見つけるための事前注文トラバーサルを思いつきました。

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、一番左のノードまでカウンターをインクリメントし、上に移動した場合は、右に移動する必要がある場合に備えてカウンターを減らし、演習全体を繰り返すことです。あれは正しいですか?

4

1 に答える 1