二叉树的遍历

二叉树的遍历

结构体存二叉树的每个节点,先序建立二叉树,分别按照先序中序后序递归遍历输出结果

输入格式:1 2 0 0 3 0 0

//date:2020.4.26
#include <bits/stdc++.h>
using namespace std;
typedef struct BinaryNode
{
    int data;
    struct BinaryNode *left,*right;
} Binode,*node;
node createTree()
{
    int a;
    cin>>a;
    node T;
    if(a==0)
        T=NULL;
    else
    {
        T = (node)malloc(sizeof(Binode));
        T->data=a;
        T->left=createTree();
        T->right=createTree();
    }
    return T;
}
preOrder(node T)
{
    if(T!=NULL)
    {
        cout<<T->data<<" ";
        preOrder(T->left);
        preOrder(T->right);
    }
}
MidOrder(node T)
{
    if(T!=NULL)
    {
        MidOrder(T->left);
        cout<<T->data<<" ";
        MidOrder(T->right);
    }
}
PostOrder(node T)
{
    if(T!=NULL)
    {
        PostOrder(T->left);
        PostOrder(T->right);
        cout<<T->data<<" ";
    }
}
int main()
{
    node T;
    cout<<"按先序输入二叉树:输入0代表NULL 例如 1 2 0 0 3 0 0"<<endl;
    T=createTree();
    preOrder(T);
    cout<<endl;
    MidOrder(T);
    cout<<endl;
    PostOrder(T);
    return 0;
}

输出结果

1 2 3
2 1 3
2 3 1

增加了DFS和BFS遍历的代码

//date:2020.4.26
#include <bits/stdc++.h>
using namespace std;
typedef struct BinaryNode
{
    int data;
    struct BinaryNode *left,*right;
} Binode,*node;
node createTree()
{
    int a;
    cin>>a;
    node T;
    if(a==0)
        T=NULL;
    else
    {
        T = (node)malloc(sizeof(Binode));
        T->data=a;
        T->left=createTree();
        T->right=createTree();
    }
    return T;
}
preOrder(node T)
{
    if(T!=NULL)
    {
        cout<<T->data<<" ";
        preOrder(T->left);
        preOrder(T->right);
    }
}
MidOrder(node T)
{
    if(T!=NULL)
    {
        MidOrder(T->left);
        cout<<T->data<<" ";
        MidOrder(T->right);
    }
}
PostOrder(node T)
{
    if(T!=NULL)
    {
        PostOrder(T->left);
        PostOrder(T->right);
        cout<<T->data<<" ";
    }
}
void DFS(node T)
{
    if(T!=NULL)
        cout<<T->data<<" ";
    if(T->left!=NULL)
        DFS(T->left);
    if(T->right!=NULL)
        DFS(T->right);
}
void BFS(node T)
{
    queue<node> q;
    if(T!=NULL)
        q.push(T);
    while(!q.empty())
    {
        T=q.front();
        q.pop();
        cout<<T->data<<" ";
        if(T->left!=NULL)
            q.push(T->left);
        if(T->right!=NULL)
            q.push(T->right);
    }
}
int main()
{
    node T;
    cout<<"按先序输入二叉树:输入0代表NULL 例如 1 2 0 0 3 0 0"<<endl;
    T=createTree();
    preOrder(T);
    cout<<endl;
    MidOrder(T);
    cout<<endl;
    PostOrder(T);
    cout<<endl;
    DFS(T);
    cout<<endl;
    BFS(T);
    return 0;
}

输入的二叉树是 1 2 3 0 0 0 4 0 0  

输出结果

1 2 3 4
3 2 1 4
3 2 4 1
1 2 3 4
1 2 4 3

原文链接: https://www.cnblogs.com/someonezero/p/12782613.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    二叉树的遍历

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/344647

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:48
下一篇 2023年3月2日 上午2:49

相关推荐