文章都以中序二叉树为例子
我们对二叉树的遍历,一般是通过递归的方式来实现的.而递归耗费的资源多.
这里就有先辈提出问题:是否能用另外的方式来遍历二叉树,从而达到节省资源的目的.比较暴力的办法,就是在每个结点添加 pre(前驱) 和 next(后继)两个指针,形成链表的结构.
上图为例,任给一个结点(一般是a),我们就可以通过指针pre找到链表的首字母d.再通过指针next,一个个将结点:dbeac打印出来.
再此基础上,有些天才就想出来了更巧妙的办法来节省空间(当然这样也增加了我们学习的难度,哈哈),他们觉得增加pre,next太浪费空间了,而我们知道,n个结点的二叉树,它是有n+1个空指针.把这些空指针用来存放原本pre,next存放的信息,就可以节省空间了.
这就是我们要学的线索二叉树.
对每个结点,我们这么处理:if(lchild==null){lchild=pre} if(rchild==null){rchild==next}
这样,我们就用原先的空闲空间来存储pre,next,不需要额外开辟内存空间存储pr