Binary Tree part 2

Jimmy (xiaoke) Shen
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;
}
};

--

--

No responses yet