二叉树定义与遍历

#include<iostream>
#include<bits/stdc++.h>

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<iostream>
#include<bits/stdc++.h>
#include "TreeNode.h"

using namespace std;

void preOrder(TreeNode* head) {

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

void inOrder(TreeNode* head) {

    if(head==nullptr) {
        return;
    }

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

void postOrder(TreeNode* head) {

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

    postOrder(head->left);
    postOrder(head->right);
    cout<<head->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<<endl;
    inOrder(head);
    cout<<endl;
    postOrder(head);
    cout<<endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值