二叉树(链式存储)-递归实现层次遍历实现思路
层次遍历
层次遍历:自上而下,从左往右访问结点
思路
除了根节点首先需要访问外,其他结点遍历都遵循先访问左孩子结点,后访问右孩子结点,所以只需要传入父节点,就可以访问左右孩子结点了,符合递归的思想。
实现代码
typedef struct BiTNode {
ElemType data;
BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
/*
* 递归实现层次遍历
* 实现思路:根节点只访问一次,左右孩子结点先访问,再递归访问孩子的孩子,就是一层一层访问,使用递归
*/
bool flag = true;
bool LevelOrderRecursion(BiTree T) {
if (T == NULL) {
return false;
}
if (T != NULL && flag == true) {
//只访问一次,用于访问根节点,不然递归会重复访问左右孩子结点
printf("%d ", T->data);
flag = false;
}
if (T->lchild != NULL) {
//访问左孩子
printf("%d ", T->lchild->data);
}
if (T->rchild != NULL) {
//访问右孩子
printf("%d ", T->rchild->data);
}
LevelOrderRecursion(T->lchild); //递归访问
LevelOrderRecursion(T->rchild); //递归访问
return true;
}
下一篇:
删除链表中重复的元素
