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

前序遍历二叉树

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;
}

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

posted @ 2014-09-05 13:56  ruccsbingo  阅读(136)  评论(0编辑  收藏  举报