問題:
從二叉樹節點a出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點b時,路徑上的節點數叫做a到b的距離。
基本思路:
乙個以h為頭的樹上,最大的距離只可能來自以下三種情況:
h左子樹上的最大距離
h右子樹上的最大距離
h左子樹上離h.left最遠的距離+1+h右子樹上離h.right最遠的距離
三個值中的最大值就是整棵h樹中最遠的距離
def maxdistance(root):
return process(root)[0]
def process(root):
#['最大距離','樹的高度']
if root == none:
return [0,0]
leftdata = process(root.left)
rightdata = process(root.right)
height = max(leftdata[1],rightdata[1]) + 1
maxdistance = max(max(leftdata[0],rightdata[0]),leftdata[1] + rightdata[1] +1)
return [maxdistance,height]
二叉樹節點間的最大距離問題
題目 二叉樹中,乙個節點可以往上走和往下走,那麼從節點a總能走到節點b。節點a走到節點b的距離為 a走到b最短路徑上的節點個數。求一棵二叉樹上的最遠距離。public class maxdistanceintree public static class returntype public stat...
二叉樹節點的最大距離
程式設計之美3.10節。完整 如下 view code 1 include 2 include 3 include 4 include 5 include 6 include 7 using namespace std 89 struct node 1018 19 20void createtree...
二叉樹問題 二叉樹節點間的最大距離
從二叉樹的節點 a 出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點 b 時,路徑上的節點數叫作 a 到 b 的距離。現在給出一棵二叉樹,求整棵樹上每對節點之間的最大距離。例如下圖二叉樹的節點間最大距離為節點5到節點7的距離為5。乙個以 為根節點的樹上,最大的距離只可能來自以下三種情況...