104. Maximum Depth of Binary Tree
二叉树最大深度
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
类似这种问题两种思路:递归与非递归,非递归用栈或队列
递归:
/**
* 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) {
if (root == NULL) return 0;
if (root -> left == NULL && root -> right == NULL) return 1;
int l = maxDepth(root -> left);
int r = maxDepth(root -> right);
return 1 + (l > r ? l : r);
}
};
运行结果:
Accepted 6ms 28.77%
非递归:C++自带队列库queue
/**
* 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) {
if(root == NULL)
return 0;
int level = 0;
queue<TreeNode> q1;
q1.push(*root);
int curNum = 1; //num of nodes left in current level
int nextNum = 0; //num of nodes in next level
while(!q1.empty())
{
TreeNode n = q1.front();
q1.pop();
curNum--;
if(n.left!=NULL)
{
q1.push(*(n.left));
nextNum++;
}
if(n.right!=NULL)
{
q1.push(*(n.right));
nextNum++;
}
if(curNum == 0)
{
curNum = nextNum;
nextNum = 0;
level++;
}
}
return level;
}
};
运行结果:
Accepted 6ms 28.77%
————————————————
118. Pascal's Triangle
帕斯卡三角
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return