二叉树的中序遍历

二叉树的中序遍历->递归算法:

typedef struct node_t{
    char *value;
    node_t *left;
    node_t *right;
}*tree, node;

void traverse(tree root, void (*visit)(node)) {
    if(root != NULL) {
        traverse(root->left, visit);
        visit(root);
        traverse(root->right, visit);
    }
}

二叉树中序遍历->非递归算法:

typedef struct node_t{
    char *value;
    node_t *left;
    node_t *right;
}*tree, node;

void traverse(tree root, void(*visit)(node)){
    node * stack[255];
    int i=0;
    while(root != NULL || i != 0) {
        if(root->left != NULL) {
            stack[i++] = root;
            root = root ->left;
        } else {
            root = stack[--i];
            visit(root);
            root = root->right;
        }
    }
}

 

posted @ 2013-07-25 20:45  ..孔雀翎..  阅读(207)  评论(0编辑  收藏  举报