首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2013-10-31 
c++怎么实现二叉树操作Struct TElemType{ElemType dataTElemType *lchild,*rchild}Class BiTree{Privat

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

热点排行