Tree min_avl_tree(const int height) { int last_node_assigned = 0 ; return gen_tree (height, &last_node_assigned) ; } Tree gen_tree (const int height, int * const lastnode) { Tree tree ; if (height >= 0) { tree = (Node *) malloc (sizeof (Node)) ; tree -> left = gen_tree (height – 1, lastnode) ; tree -> item = ++*lastnode ; tree -> right = gen_tree (height – 2, lastnode) ; return tree ; } else return NULL; }
这个是答案中给的,感觉纯粹是根据AVL树的定义写出来的,理所当然地用到了递归.传递参数时传递了指向int类型的指针,这样就有了类似静态局部变量的效果.总而言之,这个代码我很喜欢.