zoukankan      html  css  js  c++  java
  • 二叉树的遍历

    二叉树的遍历

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

    输入格式: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

  • 相关阅读:
    js 仿 asp中的 asc 和 chr 函数的代码
    escape,encodeURI,encodeURIComponent
    从项目从SVN上check下来,用idea打开后,idea没有SVN的工具栏解决方法
    idea中导入SVN的项目时,连接失败,报“Cannot run program "svn"
    spring基础----事件(Applicaition Event)
    idea在导入项目时遇到的问题
    Spring基础---bean的初始化和销毁
    spring基础----EL和资源调用
    spring基础----Bean的Scope
    面试题-------------js三种信息框
  • 原文地址:https://www.cnblogs.com/someonezero/p/12782613.html
Copyright © 2011-2022 走看看