我正在尝试为二进制搜索树制作 c++ 程序,该程序将包含以下功能(实际上这是我大学作业的一部分):
A) 创建二叉搜索树。
B) 中序、前序、后序遍历。(非递归)
C) 在树中搜索 Val。
D) 广度优先遍历。
E) 深度优先遍历
F) 计算叶节点、非叶节点。
G) 计数号。级数
我的疑问是:-
1.通常一个树节点有以下结构:
class node{
private:
node *lChild;
int info;
node *rChild;
}
因此,如果我想执行深度优先或广度优先遍历,我可以更改节点结构并添加一个指向父节点的指针,以便我可以轻松地在层次结构中向后移动
class node{
private:
node *parent //pointer to parent node
node *lChild;
int info;
node *rChild;
}
这被认为是编程二叉树的正常做法还是不好的形式?如果它不被认为是编程树的好方法,还有其他方法还是我必须使用使用堆栈(用于深度优先)和队列(用于广度优先)的书中给出的方法来存储节点(访问过或相应地未访问)
2.这是我第一次学习数据结构,所以如果有人能用简单的话解释一下考虑到二叉树的递归和非递归遍历有什么区别,那将是一个很大的帮助