leetcode hot100刷题日记——14.二叉树的最大深度
解答:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int maxDepth(TreeNode* root) {//方法一:深度优先遍历,时间复杂度:O(n),其中 n 为二叉树节点的个数。每个节点在递归中只被遍历一次。//空间复杂度为O(height),等价于二叉树的高度// if(root==nullptr){// return 0;// } // return max(maxDepth(root->left),maxDepth(root->right))+1;//方法二:广度优先遍历//存放当前层的所有节点,用队列(先进先出)//每次遍历完一层,依次弹出队列中的节点继续拓展//时间复杂度O(n)//空间复杂度最坏是O(n)if(root==nullptr){return 0;}queue<TreeNode*>Q;Q.push(root);int depth=0;while(!Q.empty()){int Qsize=Q.size();while(Qsize>0){TreeNode *q=Q.front();Q.pop();if(q->left!=nullptr){Q.push(q->left);}if(q->right!=nullptr){Q.push(q->right);}Qsize--;}depth++;}return depth;}
};