题目:二叉树的最大深度
原题链接:二叉树的最大深度
这道题使用使用BFS(广度优先遍历),将每个节点的数据域用来记录当前节点的深度即可。代码如下:
/**
* 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;
queue<TreeNode*> q;
root->val = 1;
int count = 1;
q.push(root);
while(!q.empty()){
TreeNode* temp = q.front();
count = max(count, temp->val);
q.pop();
if(temp->left != NULL || temp->right != NULL){
if(temp->left != NULL){
temp->left->val = temp->val + 1;
q.push(temp->left);
}
if(temp->right != NULL){
temp->right->val = temp->val + 1;
q.push(temp->right);
}
}
}
return count;
}
};
题外话:
你连想改变别人的念头都不要有。要学习太阳一样,只是发出光和热,每个人接收阳光的反应有所不同,有人觉得刺眼有人觉得温暖,有人甚至躲开阳光。种子破土发芽前没有任何迹象,是因为没到那个时间点。只有自己才是自己的拯救者。
——荣格