104.二叉树的最大深度
class Solution {
public:
int get_max(TreeNode* root) {
if(root == NULL) return 0;
int left_depth = get_max(root->left);
int right_depth = get_max(root->right);
int depth = max(left_depth, right_depth) + 1;
return depth;
}
int maxDepth(TreeNode* root) {
return get_max(root);
}
};
111.二叉树的最小深度
class Solution {
public:
int get_depth(TreeNode* root){
if(root == NULL) return 0; //这是叶子结点下一个点,所以高度为0,就返回0
int leftmin = get_depth(root->left); //左边的最大值
int rightmin = get_depth(root->right); //右边的最大值
if(root->left ==NULL &&root->right !=NULL) return 1+rightmin;
else if(root->right ==NULL &&root->left !=NULL) return 1+leftmin;
else
return 1+min(leftmin, rightmin);
}
int minDepth(TreeNode* root) {
return get_depth(root);
}
};
222.完全二叉树的节点个数
和上一个题一毛一样。。。慢二叉树的解法不是很理解如果碰到的不是满二叉树会怎么处理,在视频的第十分钟有讲解,不会进入死循环一定会碰到满二叉树因为叶子节点一定是满二叉
class Solution {
public:
int get_node(TreeNode* Node) {
if(Node == NULL) return 0;
int left_number = get_node(Node->left);
int right_number = get_node(Node->right);
int number = 1+ left_number + right_number;
return number;
}
int countNodes(TreeNode* root) {
int result = get_node(root);
return result;
}
};