C语言:如何用递归的方法层序遍历一棵二叉树?
层序遍历使用递归,请求大佬描述一下详细思路,或者提供伪代码,感激不尽!
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int status;
typedef int ElemType;
typedef int KeyType;
//数据元素类型定义
typedef struct {
//二叉树结点类型定义
KeyType key;
char others[20];
} TElemType;
typedef struct BiTNode {
//二叉链表结点的定义
TElemType data;
struct BiTNode* lchild, * rchild;
} BiTNode, * BiTree;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有个思路,就是给每个节点增加一个指向下一个兄弟节点的指针。然后访问的时候从根开始,向下遍历所有左孩子,对于每一个左孩子,递归遍历它的下一个兄弟节点。
麻烦的地方在于建立树的时候,要设置好指向下一个兄弟节点的指针。
可以用BFS,虽然不符合题目中递归的条件
非要递归的话,可以给BiTNode增加一个成员depth,递归计算,然后用类似桶排的东西输出(?)总之感觉很难受