二叉树的中序遍历->递归算法:
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; } } }