现在有一颗合法的二叉树,树的节点都是数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度。
输入的第一行表示节点个数为n,节点的编号为0到n-1组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号
输出树的高度,为一个整数。
样例输入:
5
0 1
0 2
1 3
1 4
样例输出: 3
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
贴一个自己的满分解答
关于找根节点的问题,每次碰到一个
a -> b的边,b就被标记一下不是根节点,最后找出唯一一个没有被标记的点就好了。
你是在小米笔试吗
没说根结点是哪个怎么做...找一个度不为三的点作DFS就好了
这个有人会js写法吗
自己用node运行试了用例可以,但是放上去就报错....哭~
自己运行都是正确的,提交上去只有10%的正确率,心累.
谁帮我看一看哪里还有错误?我也找到根节点了的。
求一个答案啊
怎么找根节点?
写的代码 过了10%的样例,应该是没找到根节点
既然有了父子关系,就说明从子节点可以找到父节点
用一个数组保存父子关系,array[childNo]=fatherNo(array[]初始化为全-1)
找到每个节点所在的层数:
从这个节点开始,利用array[]找他的父节点,不停的向上找,每向上一层count就+1,一直找到根节点为止(array[child]==-1),这个时候count+1就是节点在的层数
找出所有节点所在层数的最大值就是树的高度(应该可与不用求所有节点的层数)
这个代码就是平台AC过的,其中根结点是根据0到n-1的和减去右侧一列的值所得的差值即为根结点。