如何简化这种二叉树遍历功能?

Pra*_*are 3 c++ algorithm binary-tree

template<typename T>
void traverse_binary_tree(BinaryTreeNode<T>* root,int order = 0)// 0:pre, 1:in , 2:post
{
    if( root == NULL ) return;

    if(order == 0) cout << root->data << " ";

    traverse_binary_tree(root->left,order);

    if(order == 1) cout << root->data << " ";

    traverse_binary_tree(root->right,order);

    if(order == 2) cout << root->data << " ";

}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来编写这个功能?

sje*_*397 8

没有.

开玩笑.我认为它看起来很有效率.

为了便于阅读,我会枚举订单值.

...
enum TOrder {ORDER_PRE, ORDER_IN, ORDER_POST};

template<typename T>
void traverse_binary_tree(BinaryTreeNode<T>* root,TOrder order = ORDER_PRE) {
...
Run Code Online (Sandbox Code Playgroud)