没有合适的资源?快使用搜索试试~ 我知道了~
5-1算法PreOrder1
需积分: 0 1 下载量 189 浏览量
2022-08-03
13:21:33
上传
评论
收藏 228KB PDF 举报
温馨提示
试读
2页
5-1算法PreOrder1
资源详情
资源评论
资源推荐
///5.2.4节 算法PreOrder
//递归先根遍历以结点t为根结点的子树
template <class T>
void BinTree<T>::PreOrder(BinTreeNode<T> *t) const
{
if ( t != NULL ) //当子树为空时,终止遍历
{
cout << t->GetData() <<endl ; // 输出结点 t 的数据值
PreOrder ( t -> GetLeft() ); // 先根遍历 t 的左子树
PreOrder ( t ->GetRight() ); // 先根遍历 t 的右子树
}
};
5.2 节 链接存储二叉树类 BinTree 的定义
/* 二叉树结点类声明*/
template<class T>
class BinTreeNode
{
private:
BinTreeNode<T> *left , *right; // 指向左、右子结点的指针
T data ; // 数据域
public:
BinTreeNode(const T & item,BinTreeNode<T> *lptr = NULL,BinTreeNode<T> *rptr = NULL):
data(item), left(lptr), right(rptr) { } // 构造函数
BinTreeNode<T> * GetLeft(void)const { return left ; } //返回左子结点
void SetLeft(BinTreeNode<T> *L){ left = L ; } //设置左子结点
BinTreeNode<T> * GetRight(void)const { return right ; } //返回右子结点
void SetRight(BinTreeNode<T> *R){ right = R ;} //设置右子结点
T& GetData() { return data; }
void SetData(const T & item){ data = item ; }
} ;
/*二叉树类BinTree的声明*/
template <class T>
class BinTree
{
private:
BinTreeNode<T> *root; // 指向二叉树根结点的指针
T stop; //构造二叉树时的输入结束符,即:若输入stop则停止输入
public:
BinTree(BinTreeNode<T> * t=NULL): root(t) { } // 构造函数
virtual ~ BinTree(){ Del(root) ; } // 析构函数,删除整棵二叉树
void PreOrder(BinTreeNode<T> *t)const ; // 先根遍历并输出以结点t为根结点的子树
void InOrder(BinTreeNode<T> *t)const ; // 中根遍历并输出以结点t为根结点的子树
void PostOrder(BinTreeNode<T> *t)const ; // 后根遍历并输出以结点t为根结点的子树
void LevelOrder (BinTreeNode<T> *t )const; // 层次遍历并输出以结点t为根结点的子树
void NorecPreOrder(BinTreeNode<T> *t)const ; // 非递归先根遍历并输出以结点t为根的子树
void NorecInOrder(BinTreeNode<T> *t)const ; // 非递归中根遍历并输出以结点t为根的子树
void NorecPostOrder(BinTreeNode<T> *t)const; // 非递归后根遍历并输出以结点t为根的子树
void CreateBinTree(T tostop) ; //创建二叉树
BinTreeNode<T> * Create() ;
BinTreeNode<T> * CopyTree ( BinTreeNode<T> *t ); // 复制以结点t为根的二叉树
// 在以结点t为根结点的子树中搜索结点p的父结点
BinTreeNode<T> *Father(BinTreeNode<T> *t,BinTreeNode<T> *p);
//在以结点t为根结点的子树中查找data域为item的结点
BinTreeNode<T> * Find(BinTreeNode<T> *t,const T & item) const ;
void InsertLeft(BinTreeNode<T> *t,T item); //在结点t的左侧插入data域为item的结点
void InsertRight(BinTreeNode<T> *t,T item); //在结点t的右侧插入data域为item的结点
void DelSubtree( BinTreeNode<T> *t ); // 从树中删除结点t及其左右子树
IYA1738
- 粉丝: 22
- 资源: 270
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (完整)数据库课程设计餐厅点餐说明书-21ab6d3c8beb172ded630b1c59eef8c75ebf952c.doc
- 2023-04-06-项目笔记 - 第一百五十四阶段 - 4.4.2.152全局变量的作用域-152 -2024.06.04
- 松哥解协议松哥解协议松哥解协议松哥解协议松哥解协议
- 618节日618节日618节日
- tensorflow-gpu-2.9.1-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp39-cp39-win-amd64.whl
- lcd daimalcd daima
- 电影领域-推荐算法-个性化内容-观影决策-电影推荐小程序.zip
- 电气控制PLC考试题库
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0