c++怎么实现二叉树操作
Struct TElemType{
ElemType data;
TElemType *lchild,*rchild;
};
Class BiTree{
Private:
TElemType *root;
Public:
BiTree()//构造函数,输入字符序列,建立二叉链表。
~BiTree()//析构函数,销毁二叉树
Status PreOrderTraverseA(Status (*visit)(TElemType e))//(递归算法)采用二叉链表存储结构,先序遍历二叉树。
Status InOrderTraverseA(Status (*visit)(TElemType e))//(递归算法)采用二叉链表存储结构,中序遍历二叉树。
Status PosOrderTraverseA(Status (*visit)(TElemType e))//(递归算法)采用二叉链表存储结构,后序遍历二叉树。
Status PreOrderTraverseB(Status (*visit)(TElemType e))//(非递归算法)采用二叉链表存储结构,先序遍历二叉树。
Status InOrderTraverseB(Status (*visit)(TElemType e))//(非递归算法)采用二叉链表存储结构,中序遍历二叉树。
Status PosOrderTraverseB(Status (*visit)(TElemType e))//(非递归算法)采用二叉链表存储结构,后序遍历二叉树。
Int BiTreeDepth()//求二叉树的深度。
Int BiTreeLeafNumber()//求叶子的数目
Status DeleteSubtree(p)//删除p所指向的子树
Status LevelOrderTraverse(Status (*visit)(TElemType e))//层序遍历二叉树
};
因为是在word上写的,可能格式不太对。
我想问的是,我想用c++实现二叉树,但是root是类成员,这样的话那些成员函数怎么递归呀?(我还没想清楚,所以成员函数中的参数是乱写的可以改,不能在成员函数里面调用其他函数来实现递归)
[解决办法]
非递归遍历呗
[解决办法]
Status PreOrderTraverseA(Status (*visit)(TElemType e))//(递归算法)采用二叉链表存储结构,先序遍历二叉树
Status PreOrderTraverseA(Status (*visit)(TElemType e){
if(e!=null) {
PreOrderTraverseA(e->lchild);
PreOrderTraverseA(e->rchild);
}
else return;
}
其他递归遍历类似~