线索二叉树 C++
线索二叉树 C++ 以此二叉树为例进行创建: 前序法创建节点,输入’#'表示为NULL 用前序创建的话需要输入 :ABD##E##C#G## 前序遍历:ABD##E##C#G## 中序遍历:#D#B#E#A#C#G# 后序遍历: ##D##EB###GCA 层序遍历: ABCDEG 在进行线索二叉树线索化的过程中我们并不设置 头结点, 而是**直接设置一个全局变量 指针 Prev **, 表示指向上一个节点的位置 。 思想: 1.首先对创建好的二叉树利用一次中序遍历的过程设置好 lTag 与 rtag 。 在这个过程中 T指针负责设置 T->ltag(前驱), prev指针负责设置 prev->rtag(后继) 2.中序线索二叉树的遍历 ,由于设置了前驱和后继,就可以不使用栈, 直接用 迭代法 进行中序遍历。 ThreadBiTree.h # pragma once # include <iostream> using namespace std ; # define MAX 30 typedef char ElemType ; typedef struct ThreadBiNode { ElemType data ; struct ThreadBiNode * lchild , * rchild ; int ltag , rtag ; //0表示正常连接孩子, 1表示前缀后缀