首页 > 其他分享 >1102 Invert a Binary Tree

1102 Invert a Binary Tree

时间:2022-11-19 02:23:06浏览次数:48  
标签:Node Binary temp int countlay Invert 1102 now root

The following is from Max Howell @twitter:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can't invert a binary tree on a whiteboard so fuck off.
 

Now it's your turn to prove that YOU CAN invert a binary tree!

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of nodes in the tree -- and hence the nodes are numbered from 0 to N−1. Then N lines follow, each corresponds to a node from 0 to N−1, and gives the indices of the left and right children of the node. If the child does not exist, a - will be put at the position. Any pair of children are separated by a space.

Output Specification:

For each test case, print in the first line the level-order, and then in the second line the in-order traversal sequences of the inverted tree. There must be exactly one space between any adjacent numbers, and no extra space at the end of the line.

Sample Input:

8
1 -
- -
0 -
2 7
- -
- -
5 -
4 6
 

Sample Output:

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

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
vector<int> inorder;
vector<int>levelorder;
struct node
{
    int leftchild=-1;
    int rightchild=-1;
    int father=-1;
}Node[15];
void myinorder(int root)
{
    if(root==-1)return;
    myinorder(Node[root].leftchild);
    inorder.push_back(root);
    myinorder(Node[root].rightchild);
}
void layerorder(int root)
{
    queue<int> q;
    q.push(root);
    while(!q.empty())
    {
        int now=q.front();
        q.pop();
        levelorder.push_back(now);
        if(Node[now].leftchild!=-1) q.push(Node[now].leftchild);
        if(Node[now].rightchild!=-1) q.push(Node[now].rightchild);
    }
}
int main()
{
    int num;
    char temp;
//    scanf("%d",&num);
    cin>>num;    
    for(int i=0;i<num;i++)
    {
        for(int j=0;j<2;j++)
        {
        cin>>temp;
        //    scanf("%c",&temp);
            if(temp!='-' )
            {
                if(j==1)
                {
                    Node[i].leftchild=temp-'0';
                    Node[(temp-'0')].father=i;
                }
                else
                {
                    Node[i].rightchild=temp-'0';
                    Node[(temp-'0')].father=i;
                }
            
            }
            
        }
    
    }
    int flag=0;
    while(Node[flag].father!=-1)
    {
        flag=Node[flag].father;
    }
    myinorder(flag);
    layerorder(flag);
    int countlay=0;
    while(countlay!=num)
    {
        if(countlay==0)
        {
            printf("%d",levelorder[countlay]);
        }
        else
        {
            printf(" %d",levelorder[countlay]);
        }
        countlay++;    
    }
    printf("\n");
    int count=0;
    while(count!=num)
    {
        if(count==0)
        {
            printf("%d",inorder[count]);
        }
        else
        {
            printf(" %d",inorder[count]);
        }
        count++;    
    }
    
 } 

 

 

标签:Node,Binary,temp,int,countlay,Invert,1102,now,root
From: https://www.cnblogs.com/zzzlight/p/16905360.html

相关文章

  • Caused by: android.view.InflateException: Binary XML file line #2 in com.example
    在学习《Android第一行代码》的14.5章节深色主题的内容时,该章节是以MaterialTest项目作为示例的,并且在res目录下创建了一个values-29目录,在values-29目录下又创建了一个sty......
  • 状态机编码方式:二进制binary、独热码 one-hot、格雷码 gray
    关于有限状态机中常用的三种编码方式各自的优缺点 二进制编码:优点:每次加一,编码方式简单;压缩编码,使用寄存器少缺点:翻转次数多,功耗大;易出现毛刺;状态跳转需要组合逻辑多;......
  • CF1698G Long Binary String
    题面传送门以前一直以为BSGS要有逆才能做/xia首先观察一下,全序列第一个\(1\)显然是消不掉的,因为没有比它更前面的异或了,同理最后面的也是消不掉的。因此我们已经知道了......
  • Minimum Number of Operations to Sort a Binary Tree by Level
    MinimumNumberofOperationstoSortaBinaryTreebyLevelYouaregiventhe root ofabinarytreewithuniquevalues.Inoneoperation,youcanchooseany......
  • [oeasy]python0014_二进制_binary_bin
    ​ 二进制(binary)回忆上次内容上次我们了解了​​ASCII​​码表​ASCII​​码表就是​​A​​merican​​S​​tandard​​C​​odefor​​I​​nformat......
  • ZOJ 2872 Binary Partitions
    BinaryPartitionsTimeLimit: 2Seconds     MemoryLimit: 65536KBHadilovesbinarynumbers.Sohelikestopartitioneverythingintopowersoftwo......
  • 20221102 SMO1 HW
    YeahmaybeonetopicTemasimulationsthistopicwehaveontheagenda.IthinkthatthesmallestalsocrossovertoMDbecauseonoursideitalsositemainly......
  • 221102 %你赛
    T1U题目你在一个滑冰场滑冰,这个滑冰场可以看作一个\(H\timesW\)的网格,其中每一个格子都铺着一块砖——要么是冰砖要么是石砖,但还有一个特殊的格子,上面放着奖品,称为奖......
  • 二分查找Binary_Search
    二分查找与二分答案笔记二分查找Binary_Search-唔知叫咩emm-博客园(cnblogs.com)Binary_Search_int.cppBinary_Search_double.cpp基础理论二分查......
  • vue demo 1102
    <scriptlang="ts">import{ref,defineComponent}from'vue'exportdefaultdefineComponent({setup(){constfields=['name','address','email'......