zoukankan      html  css  js  c++  java
  • 树的高度

    题目描述

    现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

    输入描述:

    输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,
    下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

    输出描述:

    输出树的高度,为一个整数
    示例1

    输入

    5
    0 1
    0 2
    1 3
    1 4
    

    输出

    3
    
     1 var readline = require('readline');
     2 
     3 rl = readline.createInterface({
     4     input: process.stdin,
     5     output: process.stdout
     6 });
     7 
     8 var inputs = [];
     9 var num = 0;
    10 rl.on('line', function(data) {
    11     if(num == 0){
    12         num = Number(data.trim());
    13         if (num == 1) {
    14             console.log(1);
    15         }
    16         num = num - 1;
    17     } else {
    18         inputs.push(data.trim());
    19         if (num == inputs.length) {
    20             // 处理
    21             var result = deal(inputs);
    22 
    23             // 输出结果
    24             console.log(result);
    25 
    26             // 清0
    27             inputs.length = 0;  //不可改动
    28             num = 0;    //不可改动
    29         }
    30     }
    31 });
    32 
    33 
    34 function deal(inputs) {
    35     var result = new Array(1000).fill(0);
    36     var cnt = new Array(1000).fill(0);
    37     var cut = [];
    38     for (var i = 0; i < num; i++) {    
    39         var arr = inputs[i].split(' ');
    40         var p = arr[0];
    41         var ch = arr[1];
    42         cnt[p]++;
    43         if (cnt[p] > 2) {
    44             result[ch] = -1000;
    45             continue;
    46         }
    47         result[ch] = result[p] + 1;
    48     }
    49     result = Math.max(...result);
    50     return result + 1;
    51 }

    前面一坨主要是node的输入,功能实现在deal函数中。

    思路: 子节点的高度等于父节点高度 + 1;

    坑: 这道题题目说的是二叉树,但是测试用例里面有多叉,要手动过滤多叉(我这里用的纯暴力,没有过滤,只是把高度赋值为一个很小的值 -1000)。提交多次之后发现一组数据过不了,然后翻看大佬们的评论,才发现测试里面有多叉。

    emmm.....深刻体会到node.js的输入在A题的时候是多么的麻烦!

  • 相关阅读:
    [转] ORACLE 错误编号表一
    基于CkEditor实现.net在线开发之路(1)
    跨行清算系统的实现原理
    应用程序域
    支付机构客户备付金存管办法
    数据库培训二期试题
    MYSQL开发规范
    详解线上线下收单业务(一)第三方支付
    Solr安装配置说明
    进程(Process)
  • 原文地址:https://www.cnblogs.com/zou20134585/p/8657920.html
Copyright © 2011-2022 走看看