一、概述
1、 前序遍历、中序遍历、后序遍历的递归实现是需要系统建立一个栈的
而其迭代的实现,也都是自顶而下,之后由上而下的回退+遍历。因此需要先进后出、后进先出的数据结构(栈)来实现
非递归的方法:主要考虑什么时候输出;
关键点:
(1)前序入栈就输出,中序出栈在输出,后续需要访问第二次,出栈在输出。
while(cur != NULL) {
stack.push(cur);
vec.push_back(cur->val);
cur = cur->left;
}
(2)cur = cur->right; 无需判断右子树空与否
作者:wang-mu-mu-17
链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/shu-de-qian-xu-bian-li-fei-di-gui-fang-fa-zhan-by-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2、层次遍历的实现,需要借用队列。层次遍历的扩展就是广度优先搜索