问题及代码
/*
*Copyright(c)2017,烟台大学计算机学院
*All right reserved.
*文件名:main.cpp btree.h btree.cpp
*作者:王万兴
*完成日期:2017年11月9日
*版本号:v1.0
*
*问题描述:求叶节点
*输入描述:无
*程序输出:测试结果
*/
#include <stdio.h>
#include "btree.h"
void DispLeaf(BTNode *b)
{
if (b!=NULL)
{
if (b->lchild==NULL && b->rchild==NULL)
printf("%c ",b->data);
else
{
DispLeaf(b->lchild);
DispLeaf(b->rchild);
}
}
}
int main()
{
BTNode *b;
CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
printf("二叉树中所有的叶子节点是: ");
DispLeaf(b);
printf("\n");
DestroyBTNode(b);
return 0;
}
算法库
运行结果
知识点总结
递归遍历所有节点,当该节点的lchild和rchild都返回空,及该节点为叶节点。