递归法
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == NULL) return 0;
return 1 + max(maxDepth(root->left), maxDepth(root->right));
}
};
层序遍历
class solution {
public:
int maxDepth(TreeNode* root) {
if (root == NULL) return 0;
int depth = 0;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()) {
int size = que.size();
depth++;
for (int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return depth;
}
};
递归法
class Solution {
public:
int maxDepth(Node* root) {
if(root == NULL) return 0;
int depth = 0;
for(int i = 0; i < root->children.size(); i++)
{
depth = max(depth, maxDepth(root->children[i]));
}
return depth + 1;
}
};
层序遍历
class Solution {
public:
int maxDepth(Node* root) {
queue<Node*> que;
int depth = 0;
if(root) que.push(root);
while(!que.empty())
{
depth++;
int size = que.size();
for(int i = 0; i < size; i++)
{
Node* node = que.front();
que.pop();
for(int i = 0; i < node->children.size(); i++)
{
que.push(node->children[i]);
}
}
}
return depth;
}
};
递归法
class Solution {
public:
int minDepth(TreeNode* root) {
if(root == NULL) return 0;
if(root->right == NULL && root->left != NULL) return 1 + minDepth(root->left);
if(root->right != NULL && root->left == NULL) return 1 + minDepth(root->right);
return 1 + min(minDepth(root->left), minDepth(root->right));
}
};
层序遍历
class Solution {
public:
int minDepth(TreeNode* root) {
int depth = 0;
queue<TreeNode*> que;
if(root) que.push(root);
while(!que.empty())
{
depth++;
int size = que.size();
for(int i = 0; i < size; i++)
{
TreeNode* node = que.front();
que.pop();
if(node->left == NULL && node->right == NULL) return depth;
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}
return depth;
}
};
递归法
class Solution {
public:
int countNodes(TreeNode* root) {
if(root == NULL) return 0;
return 1 + countNodes(root->left) + countNodes(root->right);
}
};
层序遍历
class Solution {
public:
int countNodes(TreeNode* root) {
queue<TreeNode*> que;
if(root) que.push(root);
int num = 0;
while(!que.empty())
{
int size = que.size();
num += size;
for(int i = 0; i < size; i++)
{
TreeNode* node = que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}
return num;
}
};