美文网首页Linux/C
二叉树-前序-中序-后序遍历

二叉树-前序-中序-后序遍历

作者: 国服最坑开发 | 来源:发表于2020-01-06 14:37 被阅读0次

    三种排序遍历的主体说的都是当前节点, 所以可以理解为:

    • 前序: 中左右
    • 中序: 左中右
    • 后序: 左右中
      这里有个例子,
    # 一个最简单的树
         A
      B     C
    D   E  F  G
    
    
    struct Node {
        Node *left;
        Node *right;
        char data;
    };
    
    void prePrint(Node *root) {
        if (root == nullptr) return;
        cout << root->data;
        prePrint(root->left);
        prePrint(root->right);
    }
    
    void inPrint(Node *root){
        if (root == nullptr) return;
        inPrint(root->left);
        cout << root->data;
        inPrint(root->right);
    }
    
    void afterPrint(Node *root){
        if(root == nullptr) return;
        afterPrint(root->left);
        afterPrint(root->right);
        cout << root->data;
    }
    
    int main() {
    
        Node *d    = new Node{nullptr, nullptr, 'D'};
        Node *e    = new Node{nullptr, nullptr, 'E'};
        Node *f    = new Node{nullptr, nullptr, 'F'};
        Node *g    = new Node{nullptr, nullptr, 'G'};
        Node *b    = new Node{d, e, 'B'};
        Node *c    = new Node{f, g, 'C'};
        Node *root = new Node{b, c, 'A'};
    
        cout << "pre  :";
        prePrint(root);
        cout << endl;
    
        cout << "in   :";
        inPrint(root);
        cout << endl;
    
        cout << "after:";
        afterPrint(root);
        cout << endl;
    }
    

    输出结果:
    pre :ABDECFG
    in :DBEAFCG
    after:DEBFGCA

    相关文章

      网友评论

        本文标题:二叉树-前序-中序-后序遍历

        本文链接:https://www.haomeiwen.com/subject/nxlkactx.html