开发者社区> 问答> 正文

数据结构用栈怎样计算树的结点和叶子?

数据结构用栈怎样计算树的结点和叶子?

展开
收起
知与谁同 2018-07-18 17:35:34 1272 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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何使用Tair增强数据结构构建丰富在线实时场景 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
低代码开发师(初级)实战教程 立即下载