LeetCode 樹 二叉樹的直徑

2022-08-20 09:57:09 字數 1136 閱讀 6641

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。

示例:

給定二叉樹

1/ \

2 3

/ \

4 5

返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。

注意:兩結點之間的路徑長度是以它們之間邊的數目表示。

乙個二叉樹的直徑就是左子樹的最大深度加右子樹的最大深度。由於這條路徑有可能不穿過根節點,所以需要遍歷樹中每乙個節點,把每個節點都當做根節點求以當前節點為根節點的直徑,然後取最大值即是整棵樹的直徑。**如下:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

return ans;

}/*求樹的深度*/

void search(treenode* root, int d, int& curmax)

search(root->left, d+1, curmax);

search(root->right, d+1, curmax);

}};

思路1把遍歷節點和計算以當前節點為根的直徑分開了,可以寫在一起。**如下:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

/*求樹的深度*/

int depth(treenode* root)

int l = depth(root->left);

int r = depth(root->right);

ans = max(ans, l+r+1);

return max(l,r)+1;

}};

1、官方題解:solution/er-cha-shu-de-zhi-jing-by-leetcode-solution/

LeetCode 二叉樹的直徑

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

LeetCode 二叉樹的直徑

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

LeetCode 二叉樹的直徑

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