Binary Tree part 2
1 min readFeb 12, 2020
104. Maximum Depth of Binary Tree
https://leetcode.com/problems/maximum-depth-of-binary-tree/
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int helper(TreeNode* node, int depth){
int left = node->left?helper(node->left, depth+1):depth;
int right = node->right?helper(node->right, depth+1):depth;
return max(left, right);
}
int maxDepth(TreeNode* root) {
if(!root)return 0;
return helper(root, 1);
}
};
We can make it concisely in one line.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
return root?1+max(maxDepth(root->left), maxDepth(root->right)):0;
}
}
543. Diameter of Binary Tree
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int length = 0;
int depth(TreeNode* root) {
if (!root)return 0;
int left = depth(root->left), right = depth(root->right);
length = max(length, left+right);
return max(left,right)+1;
}
int diameterOfBinaryTree(TreeNode* root) {
depth(root);
return length;
}
};