0

困惑している練習問題があります-再帰を使用せずに二分木の葉ノードの数を取得することです。ノードをスタックに渡すなどのアイデアを見てきましたが、複数のブランチがある場合にそれを行う方法がわかりません。誰でもポインタを提供できますか?

4

1 に答える 1

1
NumberOfLeafNodes(root);
int NumberOfLeafNodes(NODE *p)
{
    NODE *nodestack[50];
    int top=-1;
    int count=0;
    if(p==NULL)
        return 0;
    nodestack[++top]=p;
    while(top!=-1)
    {
        p=nodestack[top--];
        while(p!=NULL)
        {
            if(p->leftchild==NULL && p->rightchild==NULL)
                count++;
            if(p->rightchild!=NULL)
                nodestack[++top]=p->rightchild;
            p=p->leftchild;      
        }
    }
return count;
}
于 2013-01-19T23:02:33.457 に答える