参考文章代码随想录 (programmercarl.com)
对于节点的定义,本文是建立在这个基础上的
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x),left(NULL),right(NULL){
}
};
1、统一迭代法(利用栈)
1、1前序
由于是统一模型,懂前序遍历,中序与后序是一样的。
首先,统一迭代法前序遍历是根左右,利用栈,即调整节点的顺序在栈内为右左根(根本思想)
其次,要调整顺序,又需要输出,我们每一次访问的都是根,我们需要打上标记,方便后面输出,不然我们不确定什么时候对于每一个节点其顺序已经排好。
vector<int> preorderTraversal2(TreeNode* root) {//使用标记法,根左右,压入栈右左根
vector<int> result;