• 递归法创建二叉树


    用递归法创建二叉树

    定义二叉树的结构如下:

    typedef struct TreeNode{
        char a;
        struct TreeNode *left;
        struct TreeNode *right; 
    }Tree;
    
    

    定义的结构体Tree里有三个成员,a,左子树left,右子树right

    二叉树创建遍历规则:

    1.前序:根-左-右

    2.中序:左-根-右

    3.后序:左-右-根

    定义的函数:

    void CreateTree(TreeNode * &T)//先序法创建二叉树 
    {
     
        char data;
        cin>>data;
        if(data=='#')
            T=NULL;
        else 
        {
             T=new TreeNode;
             T->a=data;
             CreateTree(T->left);
             CreateTree(T->right);
        }
    }
    
    void PreorderTree(TreeNode *T)//前序遍历二叉树 
    {
        if(T==NULL)
            return;
        cout<<T->a<<" ";
        PreorderTree(T->left);
        PreorderTree(T->right);
    }
    
    void InorderTree(TreeNode *T)//中序遍历二叉树 
    {
        if(T==NULL)
            return;
        InorderTree(T->left);
        cout<<T->a<<" ";
        InorderTree(T->right);
    }
    
    void PostorderTree(TreeNode *T)//后序遍历二叉树
    {
        if(T==NULL)
            return;
        PostorderTree(T->left);
        PostorderTree(T->right);
        cout<<T->a<<" ";
    }
    

    主要原理:

    先输入要创建的二叉树序列(#表示该子树为空),通过递归和先序法创建一棵二叉树,从根节点依次递归左子树直至左子树为空,再从该子树依次递归右子树依次返回直至根节点,之后再从根节点递归右子树。
    之后分别用前序遍历二叉树,中序遍历二叉树,后序遍历二叉树的方法遍历二叉树后输出。

    主函数如下:

    int main()
    {
    	cout<<"请输入先序创建二叉树的序列:"<<endl;
    	 Tree *T;
    	 CreateTree(T);
    	 cout<<"前序遍历的结果为:";
    	 PreorderTree(T);
    	 cout<<endl;
    	 cout <<"中序遍历的结果为:";
    	 InorderTree(T);
    	 cout<<endl;
    	 cout <<"后序遍历的结果为:";
    	 PostorderTree(T);
    	 return 0;
    }
    

    具体代码如下:

    二叉树示例:

    输入: A B D F # # # E # # C G # # #

    创建的二叉树如下:

    前序遍历的结果为:A B D F E C G
    中序遍历的结果为:F D B E A G C
    后序遍历的结果为:F D B E A G C

    运行截图:

  • 相关阅读:
    去除空格
    常见的Js
    无法访问 ASP 兼容性模式
    asp.net mvc 笔记一
    PowerDesigner如何将设计的表更新到数据库中
    微信小程序基于第三方websocket的服务器端部署
    C# Linq GroupBy 分组过滤求和
    一步一步教你用c# entity framework6 连接 sqlite 实现增删改查
    执行指定iframe页面的脚本
    vs2017 x64 ibatis.net 平台调用 Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 x64
  • 原文地址:https://www.cnblogs.com/ye12892/p/10776630.html
Copyright © 2020-2023  润新知