二叉樹的前序,中序,後序遍歷 遞歸實現

前序遍歷:

#include <iostream>
using namespace std;

struct TreeNode {
    int value;
    TreeNode* left;
    TreeNode* right;
};

TreeNode* createNode(int value) {
    TreeNode* node = new TreeNode;
    node -> value = value;
    node -> left = NULL;
    node -> right = NULL;
    return node;
}

void BinaryTree_PreOrder(TreeNode* root) {
    if(root == NULL) return;
    cout<<root -> value<<ends;
    if(root -> left) {
        BinaryTree_PreOrder(root -> left);
    }
    if(root -> right) {
        BinaryTree_PreOrder(root -> right);
    }
}

int main() {
    TreeNode* root = new TreeNode;
    root -> value = 10;
    root -> left = createNode(5);
    root -> right = createNode(12);
    root -> left -> left = createNode(4);
    root -> left -> right = createNode(7);
    BinaryTree_PreOrder(root);
}

中序遍歷:

#include <iostream>
using namespace std;

struct TreeNode {
    int value;
    TreeNode* left;
    TreeNode* right;
};

TreeNode* createNode(int value) {
    TreeNode* node = new TreeNode;
    node -> value = value;
    node -> left = NULL;
    node -> right = NULL;
    return node;
}

void BinaryTree_PreOrder(TreeNode* root) {
    if(root == NULL) return;
    if(root -> left) {
        BinaryTree_PreOrder(root -> left);
    }
    cout<<root -> value<<ends;
    if(root -> right) {
        BinaryTree_PreOrder(root -> right);
    }
}

int main() {
    TreeNode* root = new TreeNode;
    root -> value = 10;
    root -> left = createNode(5);
    root -> right = createNode(12);
    root -> left -> left = createNode(4);
    root -> left -> right = createNode(7);
    BinaryTree_PreOrder(root);
}

後序遍歷:

#include <iostream>
using namespace std;

struct TreeNode {
    int value;
    TreeNode* left;
    TreeNode* right;
};

TreeNode* createNode(int value) {
    TreeNode* node = new TreeNode;
    node -> value = value;
    node -> left = NULL;
    node -> right = NULL;
    return node;
}

void BinaryTree_PreOrder(TreeNode* root) {
    if(root == NULL) return;
    if(root -> left) {
        BinaryTree_PreOrder(root -> left);
    }
    if(root -> right) {
        BinaryTree_PreOrder(root -> right);
    }
    cout<<root -> value<<ends;
}

int main() {
    TreeNode* root = new TreeNode;
    root -> value = 10;
    root -> left = createNode(5);
    root -> right = createNode(12);
    root -> left -> left = createNode(4);
    root -> left -> right = createNode(7);
    BinaryTree_PreOrder(root);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章