首页 > 代码库 > 非递归遍历二叉树之前序遍历

非递归遍历二叉树之前序遍历

前序遍历二叉树

int preorder_tree_walk(BinTreeNode * root){    if(root == NULL){        return -1;    }    stack<BinTreeNode *> s;    BinTreeNode * p = root;    while(!s.empty() || p != NULL)    {        while(p != NULL){            cout << p->key<< endl;            s.push(p);            p = p->lchild;        }        p = s.top();        s.pop();        p = p->rchild;    }    return 0;}

红色的部分表示访问元素的值,和中序遍历二叉树相比,他们的区别仅仅在于访问元素的位置不同

非递归遍历二叉树之前序遍历