当前位置: 首页 > news >正文

wordpress密码可见搜索引擎排名优化seo课后题

wordpress密码可见,搜索引擎排名优化seo课后题,为网站做安全认证服务,网站通信管理部门备案引言: 线索二叉树是一种特殊的二叉树,它可以通过线索(线索是指在二叉树中将空指针改为指向前驱或后继的指针)的方式将二叉树转化为一个线性结构,从而方便对二叉树进行遍历。本文将介绍如何使用C实现线索二叉树。 技术…

引言:

        线索二叉树是一种特殊的二叉树,它可以通过线索(线索是指在二叉树中将空指针改为指向前驱或后继的指针)的方式将二叉树转化为一个线性结构,从而方便对二叉树进行遍历。本文将介绍如何使用C++实现线索二叉树。

技术实现:

        首先,我们需要定义一个结构体来表示线索二叉树的节点。结构体中包含了节点的数据、左右子节点以及左右线索标记。

template<typename Element>
struct ThrNode
{Element data;ThrNode* lchild;ThrNode* rchild;int lTag;int rTag;
};

        其中,lTag和rTag分别表示左右线索标记。如果lTag为0,则表示该节点的左子节点为普通子节点;如果lTag为1,则表示该节点的左子节点为前驱节点。rTag同理。

接下来,我们使用一个类来表示线索二叉树。该类中包含了根节点以及一些方法。

template<typename Element>
class InThrBiTree
{
public:InThrBiTree();~InThrBiTree();void inOrder();
private:ThrNode<Element>* root;void createTree(ThrNode<Element>*& node);void destroyTree(ThrNode<Element>* node);ThrNode<Element>* first(ThrNode<Element>*node);ThrNode<Element>* next(ThrNode<Element>* node);void createInThread(ThrNode<Element>*& node, ThrNode<Element>*& pre);
};

        其中,createTree方法用于创建线索二叉树,destroyTree方法用于销毁线索二叉树,inOrder方法用于中序遍历线索二叉树。first方法用于找到中序遍历的第一个节点,next方法用于找到中序遍历中的下一个节点。createInThread方法用于创建中序遍历的线索。

接下来看怎么实现:

template<typename Element>
InThrBiTree<Element>::InThrBiTree()
{createTree(root);ThrNode<Element>* pre = nullptr;if (root != nullptr){createInThread(root, pre);pre->rTag = 1;}
}template<typename Element>
InThrBiTree<Element>::~InThrBiTree()
{destroyTree(node);
}template<typename Element>
void InThrBiTree<Element>::inOrder()
{ThrNode<Element>* p = first(p);while (p != nullptr) {cout << p->data << " ";p = next(p);}cout << endl;
}template<typename Element>
void InThrBiTree<Element>::createTree(ThrNode<Element>*& node)
{char item;cin >> item;if (item == '#')node = nullptr;else {node = new BiNode<Element>;node->data = item;createTree(node->lchild);createTree(node->rchild);}
}template<typename Element>
void InThrBiTree<Element>::destroyTree(ThrNode<Element>* node)
{if(node!=nullptr){destroyTree(node->lchild);destroyTree(node->rchild);delete node;}
}template<typename Element>
ThrNode<Element>* InThrBiTree<Element>::first(ThrNode<Element>* node)
{ThrNode<Element>* p = node;while (p->lTag == 0)p = p->lchild;return p;
}template<typename Element>
ThrNode<Element>* InThrBiTree<Element>::next(ThrNode<Element>* node)
{ThrNode<Element>* p = node->rchild;if (node->rTag == 1) {return p;}else {return first(p);}
}template<typename Element>
inline void InThrBiTree<Element>::createInThread(ThrNode<Element>*& node, ThrNode<Element>*& pre)
{if (node == nullptr) return;createInThread(node->lchild, pre);if (node->lchild == nullptr){node->lchild = pre;node->lTag = 1;}if (pre != nullptr && pre->rchild == nullptr){pre->rchild = node;pre->rTag = 1;}pre = node;createInThread(node->rchild, pre);
}

最后,我们来看一下如何使用该类来创建和遍历线索二叉树。

int main()
{InThrBiTree<int> tree;tree.createTree(tree.root);tree.createInThread(tree.root, nullptr);tree.inOrder();tree.destroyTree(tree.root);return 0;
}

        首先创建一个InThrBiTree对象,然后调用createTree方法创建线索二叉树,接着调用createInThread方法创建中序遍历的线索,最后调用inOrder方法中序遍历线索二叉树。最后,调用destroyTree方法销毁线索二叉树。 

结尾:

        以上就是使用C++实现线索二叉树的方法。线索二叉树是一种非常实用的数据结构,它可以方便地对二叉树进行遍历。通过本文的介绍,相信读者已经掌握了如何使用C++实现线索二叉树的方法。

http://www.ds6.com.cn/news/5607.html

相关文章:

  • 深圳市专注网站建设sem营销是什么意思
  • 海口做网站要多少钱百度外推排名
  • 学做动态网站的步骤百度平台推广该怎么做
  • 电商平台建设做网站百度新闻官网首页
  • 网站开发功能列表钓鱼网站制作教程
  • 嘉兴php网站开发深圳网络推广培训中心
  • 学动漫设计去哪个学校seo网站推广seo
  • 网页qq邮箱怎么在手机下文件怎么打开wordpress一键优化清理手机
  • 做钓鱼网站违法吗友情链接收录
  • 建设门户网站所需视频剪辑培训机构
  • 浏阳网站建设公司广告推广平台赚取佣金
  • 做网站需要花钱吗bing搜索引擎国际版
  • 网站构建的滚动新闻怎么做惠州网站seo
  • 海外广告投放渠道营销郑州网站排名优化公司
  • o2o网站开发网上店铺的推广方法有哪些
  • 网上购物商城网站建设毕业设计百度网页浏览器
  • 稳定的网站建设推广普通话的手抄报
  • 合肥宣传网站百度云搜索引擎入口盘多多
  • 找人做时时彩网站企业宣传片视频
  • c# 网站开发框架标题关键词优化技巧
  • asp网站默认后台北京网站优化服务商
  • 网站推广联盟南京seo网络推广
  • 南京的网站建设公司哪家好google play应用商店
  • 河南浪博网站开发专业培训机构
  • 做网站用什么团建廊坊seo关键词优化
  • 网站栏目结构设计网站关键词优化推广哪家快
  • 凡科网站可以做淘宝客吗一键建站免费
  • 网页设计作业动漫网页网站seo规划
  • html5网站app开发宁波优化seo是什么
  • 自学网站制作教程阿里巴巴运营