数据结构用栈怎样计算树的结点和叶子?
收起
知与谁同
2018-07-18 17:35:34
1301
0
2
条回答
写回答
取消
提交回答
-
中序遍历树,发现某个节点没有左右孩子就说明是叶子
2019-07-17 22:54:06
-
首先要明白,递归的本质其实就是用到栈。
先序,中序,后序三种递归遍历树都可以转为用栈的非递归方式。
下面给出算法,假设栈的功能是已经实现了的。
void Find(Tree *r, int *leaves, int *node)
{
push(r);
Tree *t=NULL;
*leaves = 0;
*node = 0;
while ( (t=pop())!= NULL)//假如栈为空,返回NULL
{
if (t->left==NULL && t->right==NULL)
{
(*leaves)++;
}
else
{
(*node)++;
}
if (t->left != NULL)
{
push(t->left);
}
if (t->right != NULL)
{
push(t->right);
}
}
}
2019-07-17 22:54:05