二叉树算法(先序和中序确定二叉树算法)

二叉树的遍历算法有哪三种?二叉树的遍历算法有三种:先序,中序和后序。其划分的依据是视其每个算法中对根结点数据的访问顺序而定。不仅要熟练掌握三种遍历的递归算法,理解其执行的实际步骤,并且应该熟练掌握三种遍历的非递归算法。由于二叉树一章的很多算法,可以直接根据三种递归算法改造而

二叉树的遍历算法有哪三种?

二叉树的遍历算法有三种:先序,中序和后序。其划分的依据是视其每个算法中对根结点数据的访问顺序而定。不仅要熟练掌握三种遍历的递归算法,理解其执行的实际步骤,并且应该熟练掌握三种遍历的非递归算法。由于二叉树一章的很多算法,可以直接根据三种递归算法改造而来(比如:求叶子个数),所以,掌握了三种遍历的非递归算法后,对付诸如:“利用非递归算法求二叉树叶子个数”这样的题目就下笔如有神了。

用C++编写算法交换二叉树的左右子树如题,用VC++6.0编写算

??#include#include#includeusingnamespacestd;templatestructBiNode//二叉树的结点结构{Tdata;BiNode*lchild,*rchild;};templateclassBiTree{ ();//构造函数,初始化一棵二叉树,其前序序列由键盘输入~BiTree(void);//析构函数,释放二叉链表中各结点的存储空间BiNode*Getroot();//获得指向根结点的指针voidPreOrder(BiNode*root);//前序遍历二叉树jiaohuan(BiNode*root); *root;//指向根结点的头指针BiNode*Creat();//有参构造函数调用voidRelease(BiNode*root);//析构函数调用};/**前置条件:二叉树不存在*输入:无*功能:构造一棵二叉树*输出:无*后置条件:产生一棵二叉树*/templateBiTree::BiTree(){this->root=Creat();}/**前置条件:二叉树已存在*输入:无*功能:释放二叉链表中各结点的存储空间*输出:无*后置条件:二叉树不存在*/templateBiTree::~BiTree(void){Release(root);}/**前置条件:二叉树已存在*输入:无*功能:获取指向二叉树根结点的指针*输出:指向二叉树根结点的指针*后置条件:二叉树不变*/templateBiNode*BiTree::Getroot(){returnroot;}/**前置条件:二叉树已存在*输入:无*功能:前序遍历二叉树*输出:二叉树中结点的一个线性排列*后置条件:二叉树不变*/templatevoidBiTree::PreOrder(BiNode*root){if(root==NULL)return;else{coutdatalchild);PreOrder(root->rchild);}}/**前置条件:空二叉树*输入:数据ch;*功能:初始化一棵二叉树,构造函数调用*输出:无*后置条件:产生一棵二叉树*/templateBiNode*BiTree::Creat(){BiNode*root;Tch;cout>ch;if(ch==”#”)root=NULL;else{root=newBiNode;//生成一个结点root->data=ch;root->lchild=Creat();//递归建立左子树root->rchild=Creat();//递归建立右子树}returnroot;}/**前置条件:二叉树已经存在*输入:无*功能:释放二叉树的存储空间,析构函数调用*输出:无*后置条件:二叉树不存在*/templatevoidBiTree::Release(BiNode*root){if(root!=NULL){Release(root->lchild);//释放左子树Release(root->rchild);//释放右子树deleteroot;}}templateBiTree::jiaohuan(BiNode*root){stringm;if(root!=NULL){m=root->lchild->data;root->lchild->data=root->rchild->data;root->rchild->data=m;}}voidmain(){BiTreebt;//创建一棵树BiNode*root=bt。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1553299181@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.nhjkw.cn/3911.html