参考力扣题解
作者:hzhu212
链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/yan-se-biao-ji-fa-yi-chong-tong-yong-qie-jian-ming/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
此思路复杂度低,且简洁易懂,对于前序、中序、后序遍历,能够写出完全一致的代码,只需要调整左右节点的入栈顺序即可。
(注:由于栈FIFO的特性,入栈顺序应与遍历顺序相反,如中序遍历为左、中、右,则入栈顺序为右、中、左。)
核心思想如下:
- 使用颜色标记节点的状态,新节点为白色,已访问的节点为灰色。
- 如果遇到的节点为白色,则将其标记为灰色,然后将其右子节点、自身、左子节点依 次入栈。
- 如果遇到的节点为灰色,则将节点的值输出。
public class 二叉树的中序遍历_94 {
class ColorNode {
TreeNode node;
String color;
public ColorNode(TreeNode node, String color) {
this.node = node;
this.color