如何非递归地获取二叉树中的叶节点数?

时间:2012-11-20 04:54:05

标签: binary-tree nodes non-recursive

我有一个我难以理解的练习题 - 在不使用递归的情况下获取二叉树中的叶节点数。我已经看过一些想法了,我已经看过一些诸如将节点传递给堆栈,但是当有多个分支时我看不到怎么做。任何人都可以提供指针吗?

1 个答案:

答案 0 :(得分: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;
}