两两种方式:广度优先和深度优先
class Solution {
private:
public:
int run(TreeNode *root) {
if (nullptr == root)
return 0;
int level = 1;
queue<TreeNode*> node_queue;
node_queue.push(root);
TreeNode * level_start = root;
TreeNode * level_end = root;
while(node_queue.size())
{
TreeNode * node = node_queue.front();
node_queue.pop();
level_start = node;
if (node->left == nullptr && node->right == nullptr){
return level;
}
if (node->left) node_queue.push(node->left);
if (node->right) node_queue.push(node->right);
if (level_start == level_end) {
++level;
if (node_queue.size())level_end = node_queue.back();
}
}
return level;
}
};
/* int run(TreeNode *root) {
if (nullptr == root)
return 0;
int leftDep = 0, rightDep = 0;
if (nullptr == root->left) {
return run(root->right) + 1;
}
if (nullptr == root->right) {
return run(root->left) + 1;
}
leftDep = run(root->left);
rightDep = run(root->right);
return leftDep < rightDep ? leftDep + 1 : rightDep + 1;
}*/