320x100
https://leetcode.com/problems/diameter-of-binary-tree/
후.. 역시 문제를 제대로 읽어야 한다.
이진 트리의 root가 주어졌을 때 트리의 지름(두 노드 사이의 가장 긴 경로 길이)을 구하는 문제다.
대충 여기까지 보고 root의 left와 right의 최대 depth를 구하고 더했는데 자꾸 틀리길래 다시 읽어보니 문제에서 경로가 root를 통과하지 않을 수 있다고 한다.
그래서 클래스에 내부 변수로 최대치를 저장해놓고 그걸 리턴하게 바꿨다.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int diameterOfTree(TreeNode* node) {
if (!node) {
return 0;
}
if (!node->left && !node->right) {
return 1;
}
int left = diameterOfTree(node->left);
int right = diameterOfTree(node->right);
if (max_path_ < left + right) {
max_path_ = left + right;
}
return 1 + (left > right ? left : right);
}
int diameterOfBinaryTree(TreeNode* root) {
if (!root) {
return 0;
}
diameterOfTree(root);
return max_path_;
}
private:
int max_path_ = 0;
};
320x100
'코딩테스트 준비 > leetcode' 카테고리의 다른 글
144. Binary Tree Preorder Traversal [Easy] (0) | 2021.07.21 |
---|---|
110. Balanced Binary Tree [Easy] (0) | 2021.07.21 |
94. Binary Tree Inorder Traversal (0) | 2021.07.19 |
108. Convert Sorted Array to Binary Search Tree (0) | 2021.07.18 |
111. Minimum Depth of Binary Tree (0) | 2021.07.17 |