最强解析面试题:二叉树两节点最大距离
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:二叉树两节点最大距离相关的知识,希望对你有一定的参考价值。
目录
最强解析面试题:二叉树两节点最大距离
题目
从二叉树的节点 A 出发,可以向上或者向下走,但沿途的节点只能经过一次,当到达节点 B 时,路径上的节点数叫作 A 到 B 的距离。现在给出一棵二叉树,求整棵树上每对节点之间的最大距离。例如下图二叉树的节点间最大距离为节点5到节点7的距离为5。
思路
关注我 code 杂坛,了解更多......
二叉树的最大距离,是某一节点左右子树之间的距离,这一节点可能是根节点也可能是其他节点。所以,我们需要找出每个节点左右子树的最大距离中的最大;而左右子树的距离就是树的高度。
代码
package main
import "fmt"
type TreeNode struct
Val int
Left *TreeNode
Right *TreeNode
var sum int
func main ()
a:=new(TreeNode)
a.Val = 0
b:=new(TreeNode)
b.Val = 1
c:=new(TreeNode)
c.Val = 2
d:=new(TreeNode)
d.Val = 3
e:=new(TreeNode)
e.Val = 4
f:=new(TreeNode)
f.Val = 5
g:=new(TreeNode)
g.Val = 6
h:=new(TreeNode)
h.Val = 6
a.Left= b
a.Right = c
b.Left = d
b.Right = e
c.Left = f
c.Right = g
g.Right = h
fmt.Println("hello https://tool.lu/ tree max high",GetMax(a))
fmt.Println("hello https://tool.lu/",sum)
func GetMax(root *TreeNode) int
if root == nil
return 0
l := GetMax(root.Left)
r := GetMax(root.Right)
if sum < l+r
sum = l +r
if l > r
return l+1
return r+1
附录
编程题这种东西,需要花时间去练习。
从来不认为面试这些东西有多大用,真正知道要招什么样的人,从谈话的深度和广度就能了解,实际开发中,这个练习帮助不大。
关注我 code 杂坛,了解更多......
以上是关于最强解析面试题:二叉树两节点最大距离的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 第 B 题:二叉树任意两节点之间的最短路径