线索二叉树要点精炼
1.由来:二叉树链式存储有“空域链”;借此将分支结构“线性化”,拥有“前驱”和“后继”
2.优势:无系统栈「树的递归遍历算法」、无用户栈「树的非递归遍历算法」、遍历过程线性化,进一步提高效率
3.种类:中序线索二叉树、前序线索二叉树、后续线索二叉树
4.线索二叉树的构造:
1)线索二叉树结点TBTNode{int rtag,ltag}
2)线索化:a」中序遍历的框架+合适的线索[分别放置在递归入的前中后]
b」线索化规则:需要两个指针「当前结点p和p的前驱结点pre」,第一
建立当前结点p的前驱线索,第二建立前驱结点的后继结点;
最后中序遍历线索化需要额外注意:最后一个根结点特殊处理;
前序遍历需要额外注意:递归入口处需判断左右指针非线索才能继续
递归
3)遍历线索化:a」中序遍历
第一个结点First:ltag==0则一直访问左结点
最后一个结点Last:rtag==0则一直访问右结点
后继结点:rtag==0则先往“右走一步”再一直“往左走First”
前驱结点:ltag==0则先往“左走一步”再一直“往右走Last”
b」前序二叉树遍历
5.选择题题型:指出某结点的线索按某种线索化所应指向的结点,解题方法即是按遍历规则写出遍历序列,前驱后继一目了然