与众不同的二叉树遍历实现

中序遍历

思路

为节省保存父节点的开支(压栈),令叶节点原本指向NULL的指针指向父节点。

步骤

  1. 令当前指针(curr)指向根节点
  2. 判断当前结点(当前指针所指结点)是否为空,非空则下一步,空则停止
  3. 用temp指针指向当前结点的左子结点,并判断其是否为空,空则进入下一步,非空则进入第5步
  4. 对当前结点进行操作(比如打印)并使当前指针指向当前结点的右子节点,返回第2步
  5. 判断temp结点(temp指针所指结点)的右子结点是否为空,空则进入第6步,非空则判断右子节点是否为当前结点,不是则令temp指针指向temp结点(temp指针所指结点)的右子结点,并重复第5步,是则将temp结点的右指针置为空,然后对当前结点进行操作,并使当前指针指向当前结点的右子节点,返回第2步
  6. 令temp结点的右指针指向当前结点,并使当前指针指向当前结点的左子结点,返回第2步

未完待续。。。

点赞