104. 二叉树的最大深度
转化为求高度的问题会比较好做。
class Solution {
public:
int getdepth(TreeNode* node){
if(node==nullptr){return 0;}
int leftdep = getdepth(node->left);
int rightdep = getdepth(node->right);
int depth = 1+max(leftdep,rightdep);
return depth;
}
int maxDepth(TreeNode* root) {
int depth = getdepth(root);
return depth;
}
};
111. 二叉树的最小深度
class Solution {
public:
int getdep(TreeNode* node){
if(node == nullptr){return 0;}
int leftdepth = getdep(node->left);
int rightdepth = getdep(node->right);
int depth;
if (leftdepth == 0){
depth =1+rightdepth;
}
if(rightdepth == 0){
depth = 1+leftdepth;
}
if(leftdepth!=0 && rightdepth!=0){
depth = 1+min(leftdepth,rightdepth);
}
return depth;
}
int minDepth(TreeNode* root) {
int depth = getdep(root);
return depth;
}
};
222. 完全二叉树的节点个数
当成普通二叉树,后序遍历,这是最简单的思路
class Solution {
public:
int getnum(TreeNode* node){
if(node == nullptr){
return 0;
}
int leftnum = getnum(node->left);
int rightnum = getnum(node->right);
int nums = 1+leftnum + rightnum;
return nums;
}
int countNodes(TreeNode* root) {
return getnum(root);
}
};
但是,完全二叉树的性质完全没有使用,这显然是不合适的。利用完全二叉树性质的代码卡哥给出了。