二叉樹最長距離

2022-08-19 22:30:13 字數 724 閱讀 2216

tag: 二叉樹

思路:最長距離一定是兩個葉子節點之間的距離

=> 兩個葉子節點必定以某個節點為根節點

=> 因此用dfs思路自底向上計算經過每乙個節點的最長距離,取其最大值

以每個節點為根節點的最長距離 = 左子樹的高度+右子樹的高度

package com.zhaochao.tree;

/** * created by zhaochao on 17/1/25.

*/public class maxdistanceofbt

if(root.left == null && root.right == null)

//双枝

max = math.max(getheight(root.left) + getheight(root.right),max);

//返回單枝

return math.max(getheight(root.left),getheight(root.right));

}public int getheight(treenode root)

int left = getheight(root.left);

int right = getheight(root.right);

return math.max(left, right) + 1;

}public static void main(string args)

}

樹形dp (二叉樹中的最大路徑 最長距離)

如果題目求解目標是s規則,則求解流程可以定成以每乙個節點為頭節點的子樹在s規則下的每乙個答案,並且最終答案一定在其中。以某個節點x為頭節點的子樹中,分析答案有哪些可能性,並且這種分析是以x的左子樹 x的右子樹和x整棵樹的角度來考慮可能性的 根據第一步的可能性分析,列出所有需要的資訊 合併第二步的資訊...

在最長的距離二叉樹結點

分為兩 當後最長的距離root 沒有距離最長root,1.若路徑經過根root。則u和v是屬於不同子樹的,且它們都是該子樹中道根節點最遠的節點。否則跟它們的距離最遠相矛盾。這樣的情況如圖3 13所看到的 2.假設路徑不經過root。那麼它們一定屬於根的k個子樹之中的乙個。而且它們也是該子樹中相距最遠...

二叉樹最大距離

問題描述 給出一棵二叉樹,求二叉樹上最遠的兩個節點的距離 分析 最長距離即兩個節點間經過的路徑最長,可以把問題分解為每個節點的左子樹的最大深度與右子樹的最大深度之和的最大值,保留這個最大值並對比各節點的最大值即可得出 遞迴演算法如下 int max 0 int depth node root int...