树转二叉树

将一棵树转化成二叉树。

输入格式:

输入的信息,第一行一个数n,(n<=1000)是树的结点数,以下n行,第i+1行是第i个结点的信息,第一个整数,是该结点的特征数值,后列出所有孩子结点的特征数值,树根的特征数值规定为1, 其它结点的待征值是不大于30000的正整数。

输出格式:

输出的信息,每行为一个结点的信息,第一个数为该结点的特征数值,后面依次是根,左孩子,右孩子的特征数值,父结点,左孩子,右孩子若缺用0表示,要求结点特征数值排序后,从小到大输出。

样例输入:

6
1 2 5 4
2
5 3 6
4
3
6

样例输出:

1 0 2 0
2 1 0 5
3 5 0 6
4 5 0 0
5 2 3 4
6 3 0 0

数据范围:

n<=1000
结点的待征值是不大于30000的正整数

 
树转二叉树的重点过程:把节点的最左边子树的兄弟全部一次串到该子树上(不会影响子树自身的子树),可以边读边写节省空间。
XJ的数据一如既往的坑,说好了给一棵树的,竟然给了一堆散在外面的节点,所以bool vis[30001]来判断是否读入过该节点。
 #include<cstdio>
 #include<iostream>
 #include<string>
 using namespace std;
 struct node{
     int lch,rch,f;
 }two[];
 ];
 int main()
 {
     int n,w,num,k,ch,count;
     scanf("%d\n",&n);
     string s;
     ;j<=n;j++)
     {
         getline(cin,s);
         s+=' ';
         num=;
         k=;
         ') k++;
         for(k;k<s.length();k++)
         {
             ') break;
             num*=;
             num+=s[k]-';
         }
         ch=;
         w=num;
         count=;
         vis[num]=;
         ;i<s.length();i++)
         {
             ')
             {
                 )
                 {
                     count++;
                     two[num].lch=ch;
                     two[ch].f=num;
                 }
                 else
                 {
                     two[ch].f=w;
                     two[w].rch=ch;
                 }
                 w=ch;
                 ch=;
             }
             else
             {
                 ch*=;
                 ch+=s[i]-';
             }
         }
     }
     ;i<=;i++) if(vis[i]) printf("%d %d %d %d\n",i,two[i].f,two[i].lch,two[i].rch);
     ;
 }

XJOI1559树转二叉树的更多相关文章

  1. Java数据结构之树和二叉树(2)

    从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...

  2. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  3. lintcode :前序遍历和中序遍历树构造二叉树

    解题 前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \ 1 3 注意 你可以假设树中不存 ...

  4. lintcode: 中序遍历和后序遍历树构造二叉树

    题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 /  \ 1    3 注意 你可 ...

  5. 数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL

    树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构.    a.树是n ...

  6. python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)

    python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...

  7. 数据结构与算法(C/C++版)【树与二叉树】

    第六章<树与二叉树> 树结构是一种非线性存储结构,存储的是具有"一对多"关系的数据元素的集合. 结点: A.B.C等,结点不仅包含数据元素,而且包含指向子树的分支.例如 ...

  8. K:树、二叉树与森林之间的转换及其相关代码实现

    相关介绍:  二叉树是树的一种特殊形态,在二叉树中一个节点至多有左.右两个子节点,而在树中一个节点可以包含任意数目的子节点,对于森林,其是多棵树所组成的一个整体,树与树之间彼此相互独立,互不干扰,但其 ...

  9. K:树与二叉树

    相关介绍:  树(英语:tree)是一种抽象数据类型(ADT)或是作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成的一个具有层次关系的集合.把它 ...

随机推荐

  1. E. Devu and Flowers

    E. Devu and Flowers time limit per test 4 seconds memory limit per test 256 megabytes input standard ...

  2. mycat

    mycat系列: mycat系列-概述 Cobar的十个秘密之一 Cobar的十个秘密之二 Cobar的十个秘密之三 Cobar的十个秘密之四 Cobar的十个秘密之五 Cobar的十个秘密之六 Co ...

  3. A manager is becoming more and more popular in China

    A manager is becoming more and more popular in China; many people want to possess a position like th ...

  4. 【排序算法】归并排序算法 Java实现

    归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 基本思想 可以将一组数组分成A,B两组 依次类推,当分出来的小组只有一 ...

  5. 对JS关于对象创建的几种方式的整理

    最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式.话不多说,直接步入正题. 第一种:Object构造函数创建 var Person = new Object();Person.na ...

  6. Angular.js之指令学习笔记

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  7. Spring Data JPA: 实现自定义Repository

    一.前言 由于项目中的 实体(entity)默认都是继承一个父类(包含一些公共的属性,比如创建时间,修改时间,是否删除,主键id).为了实现逻辑删除,一般会自己实现RepositoryFactoryB ...

  8. Android学习总结(一)——Activity的基本概念与Activity的生命周期

    一.Activity的基本概念 Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用 ...

  9. move.js 源码 学习笔记

    源码笔记: /* move.js * @author:flfwzgl https://github.com/flfwzgl * @copyright: MIT license * Sorrow.X - ...

  10. swift -- 构造/析构函数

     一.构造函数 //当一个类实例化一个对象时候,第一个调用的方法 class Student { //属性 var name = "ser" let age : Int //1.重 ...