在Tree
抽象中,当前正在编写(作为代码实践),
/************ tree.h *********************/
.....
/****************** Usage-start ************/
#if defined(LCRS)
typedef struct LCRSTree Tree;
#elif defined(MULTI_WALK)
typedef struct multiWalkTree Tree;
#elif defined(BINARY_TREE)
typedef struct BinaryTree Tree;
#else
#error "Invalid representation\n"
#endif
.....
typedef void(*visitFunc)(void *);
Tree * newTree(void);
bool destroyTree(Tree *);
...
void preOrderTraversal(Tree*, visitFunc);
void postOrderTraversal(Tree *, visitFunc);
void breadthFirstTraversal(Tree *, visitFunc);
void inOrderTraversal(struct BinaryTree *, visitFunc);
.....
#endif /* TREE_H */
/**************** Usage-end ******************/
inOrderTraversal()
被声明为,
void inOrderTraversal(struct BinaryTree *, visitFunc);
这意味着,inOrderTraversal
接受二叉树而不是N-ary树(N> 2),不同于前,后,广度的首次遍历。
理念受到这个answer的启发,其中说:有序遍历是一种特殊情况。它可能只对二叉树有意义。
问题:
在最终更改代码之前,请确认我对上述代码中inOrderTraversal()
的使用情况的理解。