读书人

c++如何实现二叉树操作

发布时间: 2013-10-31 12:03:52 作者: rapoo

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;
}
其他递归遍历类似~

读书人网 >软件架构设计

热点推荐