#include<iostream>
using namespace std;
enum PointTag
{
LINK,
THREAD,
};
struct BinTreeThingNode
{
char _data;
BinTreeThingNode*_left;
BinTreeThingNode*_right;
PointTag _leftTag;
PointTag _rightTag;
BinTreeThingNode(const char &data)
:_data(data)
, _left(NULL)
, _right(NULL)
, _leftTag(LINK)
, _rightTag(LINK)
{}
};
class BinTreeThreading
{
public:
BinTreeThreading(const char *str)
{
_CreatBinTreeThreading(_root,str);//递归创建二叉树
}
void PostThread()//后序线索化
{
BinTreeThingNode*prev = NULL;
_PostOderThread(_root, prev);
}
//后序线索化的遍历
void PostSort()
{
BinTreeThingNode*cur = _root;
BinTreeThingNode *lastvisited = NULL;
while (cur)
{
//一直寻找以cur为根节点的二叉树的最左边的叶子节点
//cur->_left != lastvisited:当cur是通过其左孩子找到的时,不用又对cur进行重复找最左边的叶子节点
while (cur&&cur->_leftTag != THREAD&&
【C++】后序线索化二叉树及其遍历
最新推荐文章于 2024-07-29 08:47:18 发布
本文详细介绍了如何使用C++进行后序线索化的二叉树操作,包括如何构建后序线索二叉树以及如何进行后序遍历。通过理解线索化二叉树的概念,可以有效提升二叉树遍历的效率。
摘要由CSDN通过智能技术生成