Linux/C

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

2020-01-06  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读