已知二叉树采用链表存储结构,根结点指针为T,请写出计算二叉树中度为2的结点数目的非递归算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知二叉树采用链表存储结构,根结点指针为T,请写出计算二叉树中度为2的结点数目的非递归算法相关的知识,希望对你有一定的参考价值。

采用深度或者广度遍历就可以,分别采用栈或者队列结构。对于访问到的每个节点,如果度为2,就是所求的。比如用栈的话
push(ST,root)
while(not empty(ST))

node=pop(ST)
if(node->left)
push(ST,node->left)
if(node->right)
push(ST,node->right)


上面的伪代码实际上就是图的深度遍历,二叉树算是一种特殊的图。
具体的写法可以搜索一下就可以找到。
参考技术A int Count(AGraph *T,int v,int visit[maxSize])

ArcNode *p;
int que [maxSize],front=0,rear=0;
int j;
int s=0;
Visit(v);
visit(v)=1;
rear=(rear+1)%maxSize
que[rear]=v;

while(front!=rear)

int k=0;
front=(front+1)%maxSize;
j=que[front];
p=T->adjlist[j].firstarc
while(p!=NULL)

k++;
if(visit [p->adjvexj==0)

Visit(p->adjvex);
visit[p->adjvex]=1;
rear=(rear+1)%maxSize;
que[rear]=p->adjvex;

p=p->nextarc;


if(k==2)

s++;

return s;

以上是关于已知二叉树采用链表存储结构,根结点指针为T,请写出计算二叉树中度为2的结点数目的非递归算法的主要内容,如果未能解决你的问题,请参考以下文章

已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先

以二叉链表为存储结构,写出求二叉树高度和宽度的算法

数据结构(C语言版) 查找 算法设计Demo3

用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。

1、创建一棵二叉树,以二叉链表作存储结构,实现先根遍历算法 2、创建一棵二叉树,实现先根遍历算法、中根

设二叉树采用二叉链表表示,指针root指向根结点,试编写一个在二叉树中查找值为x的结点,并打印该结点所有祖先结点的算法。在此算法中,假设值为x的结点不多于一个。