leetcode 543 二叉樹的直徑

2021-10-03 17:17:54 字數 472 閱讀 3149

其實乙個非常暴力的方法就是將每個節點都當做根節點,然後求左右子樹的高度,相加。最後取最大值即可。

但其實這樣的n^2 暴力,可以優化到o(n).

方法是利用回溯:當dfs的時候,記錄當前節點的高度。回溯的時候,判斷以當前節點為根的最大直徑是多少即可。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

intdfs

(treenode *root,

int hight)

if(root-

>right)

ans=

max(ans,lh-hight+rh-hight)

;return

max(lh,rh);}

};

LeetCode 543 二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 1 2 3 4 5 返回3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。解題思路 該題就是求解二叉樹中...

leetcode 543 二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 1 2 3 4 5返回3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。小結 對於每個節點分別求解左 右...

Leetcode 543 二叉樹的直徑

題目描述 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。思路 直徑長度 路徑的節點數 1 以每個節點為 根節點 的最長路徑,找出最大值。最長路徑上的節點數是 1 左子樹深度 右子樹深度 樹深度是1 max 左子樹深度,右子樹深度...