网上关于后序线索二叉树的生成已经有很多相关的代码,但是很少有利用后序线索二叉树的线索来进行后序遍历的代码,这是因为后序的线索对于遍历用处不大,不如直接用递归生成遍历算法,而且要采用后序线索来产生遍历的话,一定要有一个指向其父节点的域,还有一个判断是否已经访问过的域。
struct Node {
int val; //值
Node* Left; //左子树
Node* Right; //右子树
Node* parent; //父节点
bool left_tag; //标志左子树,是线索还是儿子
bool right_tag; //标志右子树,是线索还是儿子
int visted = 0; //是否已经访问过
};
因为网上关于怎么生成后序线索二叉树已经很多了,这里就不说了,直接上代码
void Tree::Postorder(node cur, node&pre) {
if (cur == nullptr)
return ;
Tree::Postorder