zoukankan      html  css  js  c++  java
  • 二叉树入门(洛谷P1305)

    题目描述

    输入一串完全二叉树,用遍历前序打出。

    输入输出格式

    输入格式:

    第一行为二叉树的节点数n。

    后面n行,每一个字母为节点,后两个字母分别为其左右儿子。

    空节点用*表示

    输出格式:

    前序排列的完全二叉树

    输入输出样例

    输入样例:
    6
    abc
    bdi
    cj*
    d**
    i**
    j**
    输出样例:
    abdicj

    这道题是最最最简单的二叉树入门,就是建树的基本。由于用到了较多的指针,个人觉得要弄懂还是要好好思考的。
    代码如下:
     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 struct tree
     5 {
     6     char elem;
     7     tree *l,*r;//两个指针分别代表左右子树
     8 }*t[36];//创建一个指针数组
     9 void gettree ()
    10 {
    11     char c[4];
    12     int m=1,n;
    13     scanf("%d",&n);
    14     for (int i=1;i<=n;++i)
    15     {
    16         scanf("%s",c);
    17         if (i==1)//i=1时代表最上层根节点
    18         {
    19             t[i]=new tree;//t[i]这个指针指向一个新的tree结构体
    20             t[i]->elem=c[0];
    21             t[i]->l=NULL;
    22             t[i]->r=NULL;
    23         }
    24         if (c[1]!='*')
    25         {
    26             m++;
    27             t[m]=new tree;//m代表树的节点标号
    28             t[m]->elem=c[1];
    29             t[m]->l=t[m]->r=NULL;
    30             t[i]->l=t[m];//将t[i]的左子树指针指向t[m]
    31         }
    32         if (c[2]!='*')
    33         {
    34             m++;
    35             t[m]=new tree;
    36             t[m]->elem= c[2];
    37             t[m]->l=t[m]->r=NULL;
    38             t[i]->r=t[m];
    39         }
    40     }
    41 }
    42 void qx (tree *tr)
    43 {
    44     if (tr)
    45     {
    46         printf("%c",tr->elem);//先打印当前节点
    47         qx(tr->l);//再打印当前节点的左子树
    48         qx(tr->r);//最后打印当前节点的右子树
    49     }
    50 }
    51 int main()
    52 {
    53     //freopen("de.txt","r",stdin);
    54     gettree();//读入数据并建树
    55     qx(t[1]);//按照先序排列输出二叉树
    56     printf("
    ");
    57     return 0;
    58 }
    
    
  • 相关阅读:
    Shell脚本定期清空大于1G的日志文件
    Shell脚本实现监视指定进程的运行状态
    Shell脚本实现根据文件的修改时间来分类文件
    通过Shell统计PV和UV
    Python之Html解析方法
    Http请求的Python实现
    Python数据可视化之Pygal(雷达图)
    Python数据可视化之Matplotlib(饼图)
    Python数据可视化之Matplotlib(折线图)
    控制台超市系统(Python)
  • 原文地址:https://www.cnblogs.com/agenthtb/p/5844888.html
Copyright © 2011-2022 走看看