二叉树定义与遍历

二叉树定义与遍历,第1张

#include
#include

using namespace std;

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(): val(0),left(nullptr),right(nullptr){}
    TreeNode(int x):val(x),left(nullptr),right(nullptr){}
    TreeNode(int x, TreeNode* left,TreeNode*right):val(x),left(nullptr),right(nullptr){}
};


int main(int argc, char**argv) {

    TreeNode* head = new TreeNode(1);
    TreeNode* h2 = new TreeNode(2);
    TreeNode* h3 = new TreeNode(3);

    TreeNode* m2 = new TreeNode(4);
    TreeNode* m3 = new TreeNode(5);

    TreeNode* m4 = new TreeNode(6);
    TreeNode* m5 = new TreeNode(7);

    TreeNode* n2 = new TreeNode(8);
    TreeNode* n3 = new TreeNode(9);

    TreeNode* n4 = new TreeNode(10);
    TreeNode* n5 = new TreeNode(11);

    TreeNode* n6 = new TreeNode(12);
    TreeNode* n7 = new TreeNode(13);

    TreeNode* n8 = new TreeNode(14);
    TreeNode* n9 = new TreeNode(15);

    
    head->left = h2;
    head->right = h3;


    h2->left = m2;
    h2->right= m3;

    
    h3->left = m4;
    h3->right = m5;

    m2->left = n2;
    m2->right = n3;


    m3->left = n4;
    m3->right = n5;

    m4->left = n6;
    m4->right = n7;

    m5->left = n8;
    m5->right = n9;

}
// 二叉树的三种遍历方式


#include
#include
#include "TreeNode.h"

using namespace std;

void preOrder(TreeNode* head) {

    if(head==nullptr) {
        return;
    }
    cout<val<<" ";
    preOrder(head->left);
    preOrder(head->right);
}

void inOrder(TreeNode* head) {

    if(head==nullptr) {
        return;
    }

    inOrder(head->left);
    cout<val<<" ";
    inOrder(head->right);
}

void postOrder(TreeNode* head) {

    if(head==nullptr) {
        return; //
    }

    postOrder(head->left);
    postOrder(head->right);
    cout<val<<" ";
}


int main(int argc, char**argv) {

    TreeNode* head = new TreeNode(1);
    TreeNode* h2 = new TreeNode(2);
    TreeNode* h3 = new TreeNode(3);

    TreeNode* m2 = new TreeNode(4);
    TreeNode* m3 = new TreeNode(5);

    TreeNode* m4 = new TreeNode(6);
    TreeNode* m5 = new TreeNode(7);

    TreeNode* n2 = new TreeNode(8);
    TreeNode* n3 = new TreeNode(9);

    TreeNode* n4 = new TreeNode(10);
    TreeNode* n5 = new TreeNode(11);

    TreeNode* n6 = new TreeNode(12);
    TreeNode* n7 = new TreeNode(13);

    TreeNode* n8 = new TreeNode(14);
    TreeNode* n9 = new TreeNode(15);

    
    head->left = h2;
    head->right = h3;


    h2->left = m2;
    h2->right= m3;

    
    h3->left = m4;
    h3->right = m5;

    m2->left = n2;
    m2->right = n3;


    m3->left = n4;
    m3->right = n5;

    m4->left = n6;
    m4->right = n7;

    m5->left = n8;
    m5->right = n9;

    preOrder(head);
    cout<

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1352895.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-14
下一篇2022-06-14

发表评论

登录后才能评论

评论列表(0条)