zoukankan      html  css  js  c++  java
  • 输出利用先序遍历创建的二叉树的层次遍历序列(0980)

    描述

    利用先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树的层次遍历序列。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。


    input

    输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。

    output

    每个用例用一行出该用例对应的二叉树的层次遍历序列。

    样例输入

    A##
    ABC####
    AB##C##
    ABCD###EF##G##H##
    A##B##


    样例输出

    A
    ABC
    ABC
    ABHCEDFG
    A
     
     
     
    这道题非常简单,直观的看就是输出每一排的数据,解决方案就是先将根节点入队列,然后当队列不空时就将队头元素出队输出,并将其孩子节点入队,如此循环。
     
    代码如下
     
     1 #include<iostream>
     2 #include<queue>
     3 using namespace std;
     4  
     5 typedef struct node{
     6     char data;
     7     node*lchild,*rchild;
     8 }BiNode,*BiTree;
     9  
    10 BiTree create(){
    11     char ch;
    12     BiTree T;
    13     cin>>ch;
    14     if(ch=='#'){
    15         T=NULL;
    16     }else{
    17         T=new BiNode;
    18         T->data=ch;
    19         T->lchild=create();
    20         T->rchild=create();
    21     }
    22     return T;
    23 }
    24 void visit(BiTree T){
    25     cout<<T->data;
    26 }
    27 void bianli(BiTree T){
    28     if(T==NULL)return;
    29     bianli(T->lchild);
    30     visit(T);
    31     bianli(T->rchild);
    32 }
    33 void cxbl(BiTree T){
    34     queue<BiTree>q;
    35     q.push(T);
    36     BiTree p;
    37     while(!q.empty()){
    38         cout<<q.front()->data;
    39         p=q.front();
    40         q.pop();
    41         if(p->lchild!=NULL){q.push(p->lchild);
    42         }
    43         if(p->rchild!=NULL){q.push(p->rchild);
    44         }
    45     }
    46 }
    47 int main(){
    48     BiTree Tree=create();
    49     cxbl(Tree);
    50     return 0;
    51 } 
  • 相关阅读:
    MySQL创建用户及用户授权
    kubectl 更新容器镜像
    harbor安装报权限错误问题解决
    docker拉取harbor仓库镜像报x509: certificate signed by unknown authority的解决方案
    pkexec提权(限制条件:用户必须在sudo组里且知道用户密码)
    sudo useradd提权
    Linux下绕过空格的方式总结
    Solved: cannot kill Docker container permission denied
    nginx和Docker的打怪升级
    三种免费Terminal工具推荐
  • 原文地址:https://www.cnblogs.com/swust-wangyf/p/6749264.html
Copyright © 2011-2022 走看看