• NOJ 1063 生活的烦恼


    描述

    生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题。那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树,然后再给你一个整数n,让生活输出这颗二叉树的第n(n>0且n<=树的深度)层,出题者为了给生活降低难度,要求两个输出数据之间用'~'隔开。看来我们的出题人很有爱啊!

     
    输入
    第一行输入一个数N,表示有N组测试数据。接下来N行,每行一个字符串,用'#'表示为空的节点,树的结束标志为'@'。'@'后仅有一个空格,空格后为一个数字,表示生活要输出的二叉树的第几层!
    输出
    每行输出一个字符串,表示给出二叉树的第n层!
    样例输入
    2
    1 2 # # 3 # # @ 1
    5 7 3 # # # 4 # # @ 3
    样例输出
    1
    3
    提示
    5 第一层
    /
    7 4 第二层
    /
    3 第三层
    看似简单的二叉树,对我这菜鸟真是折磨~~啊
     1 #include<iostream>
     2 using namespace std;
     3 int j=1;
     4 typedef struct Node
     5 {
     6     char data;
     7     Node *left;
     8     Node *right;
     9 }Node;
    10 Node* Create()
    11 {
    12     char ch;
    13     cin>>ch;
    14     Node* root;
    15 
    16     if(ch=='#')
    17         return NULL;
    18     else
    19     {
    20         root=new Node;
    21         root->data=ch;
    22         root->left=Create();
    23         root->right=Create();
    24         return root;
    25     }
    26 }
    27 void createTree(Node *&root)
    28 {
    29     char ch;
    30     cin>>ch;
    31     if(ch == '#')
    32         root = NULL;
    33     else
    34     {
    35         root = new Node;
    36         if(!root)
    37             return;
    38         root->data = ch;
    39         createTree(root->left);
    40         createTree(root->right);
    41     }
    42 
    43 }
    44 
    45 void print(Node *root, int k, int i)
    46 {
    47     if( root )
    48     {
    49         if(i == k && j == 1)
    50         {
    51             cout<<root->data;
    52             j++;
    53             return;
    54         }
    55         else if(i == k && j > 1)
    56         {
    57             cout<<"~"<<root->data;
    58             j++;
    59             return;
    60         }
    61         i++;
    62         print(root->left,k,i);
    63         print(root->right,k,i);
    64 
    65     }
    66 }
    67 //void t(Node *root)
    68 //{
    69 //    if(root)
    70 //    {
    71 //        t(root->left);
    72 //        cout<<root->data<<" ";
    73 //        t(root->right);
    74 //    }
    75 //}
    76 int main()
    77 {
    78     char data;
    79     struct Node *root=NULL;
    80     int n,i;
    81     cin>>n;
    82     while(n--)
    83     {
    84         createTree(root);
    85         cin>>data;
    86         cin>>i;
    87         print(root,i,1);
    88         cout<<endl;
    89         root = NULL;
    90         j=1;
    91     }
    92     return 0;
    93 }
  • 相关阅读:
    创业者要有杀手气质和传教士能力
    一次只专心地做一件事,全身心地投入并积极地希望它成功
    以变应变,才有出路
    得到的并不一定就值得庆幸,失去的也并不完全是坏事情
    独处可以激发思考的力量
    把情感装入理性之盒
    随着现实的变化,我们必须随之调整自己的观念、思想、行动及目标
    岁月在变迁,彼此在成长。而我在流浪
    [TJOI 2016&HEOI 2016]排序
    [HAOI 2008]糖果传递
  • 原文地址:https://www.cnblogs.com/george-cw/p/3913525.html
Copyright © 2020-2023  润新知