小米面试题树的高度

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

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

输入

5
0 1
0 2
1 3
1 4

输出

3
示例代码:
package cn.wywk.oa.hm;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Solution { 
	
    static Scanner scanner = new Scanner(System.in); 
    public static void  main(String[] args) {  
        //节点数
        int node=scanner.nextInt();
        System.out.println(deep(node));
    }
    /**
     * 计算树的高度
     * @param node
     * @return
     */
    public static int deep(int node){
    	 if(node==0)
         	return 0;
         if(node==1)
         	return 1;
         Map<Integer, Integer> family=new HashMap<>();
         int count=1;
         for(int i=0;i<node-1;i++){
        	 int son=scanner.nextInt();
        	 int father=scanner.nextInt();
        	 family.put(son, father);
         }
         for(Integer key:family.keySet()){
        	 while(family.containsKey(key)){
        		 count++;
        		 key=family.get(key);
        	 }
         }
		return count;
    }
}  



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值