【题目描述】
Given a binary tree, return the inorder traversal of its nodes' values.
给出一棵二叉树,返回其中序遍历
【题目链接】
www.lintcode.com/en/problem/binary-tree-inorder-traversal/
【题目解析】
递归版
最好理解,递归调用时注意返回值和递归左右子树的顺序即可。
迭代版
使用辅助栈,空间复杂度O(n),时间复杂度O(n).
中序遍历没有前序遍历好写,其中之一就在于入栈出栈的顺序和限制规则。我们采用「左根右」的访问顺序可知主要有如下四步构成。
1.首先需要一直对左子树迭代并将非空节点入栈
2.节点指针为空后不再入栈
3.当前节点为空时进行出栈操作,并访问栈顶节点
4.将当前指针p用其右子节点替代
步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。
【参考答案】