第四组 统计二叉树的叶子结点的个数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4页
非递归算法
void printTree(BitTree T) { \\初始化栈 Stack s; s=(Stack*)malloc(sizeof(Stack *)); s->top=0; while(T!=null && s->top!=0){ if(T!=null){ printf(T->data); s->Maxsize[s->top]=T->data; s->top++; T=T->lchild; }
统计二叉树的叶子结点的个数
第1页
主讲内容
• 统计二叉树的叶子结点个数算法的基 本思想 • 算法解读
第2页
Βιβλιοθήκη Baidu
统计二叉树中叶子结点的个数算法基本思想
• 先序(或中序或后序)遍 历二叉树,在遍历过 程中查找叶子结点, 并计数。由此,需在 遍历算法中增添一个 “计数”的参数,并 将算法中“访问结点” 的操作改为:若是叶 子,则计数器增1。
第5页
else { T=s->Maxsize[s->top]; s->top--; if(T->lchild==null && T->rchild==null) { w++;} T=T->rchild; } } }
第6页
谢谢!
第7页
第3页
递归算法
void CountLeaf (BiTree T, int& count){ if ( T ) { if ((!T->lchild)&& (!T->rchild)) count++; // 对叶子结点计数 CountLeaf( T->lchild, count); CountLeaf( T->rchild, count); } // if } // CountLeaf