104. 二叉树的最大深度

一、后序遍历

后序为求树的高度(左右中)叶子结点的高度为1,根节点的高度即为树的深度。

  1. class Solution {
  2. public:
  3. int maxDepth(TreeNode* root) {
  4. if(root==NULL)return 0;
  5. int leftDepth = maxDepth(root->left);
  6. int rightDepth = maxDepth(root->right);
  7. return 1+max(leftDepth,rightDepth);
  8. }
  9. };

二、前序遍历

  1. class Solution {
  2. public:
  3. void dfs(TreeNode* Node)
  4. {
  5. if(Node==NULL)return;
  6. depth++;
  7. m = max(m,depth);
  8. dfs(Node->left);
  9. dfs(Node->right);
  10. depth--;
  11. }
  12. int maxDepth(TreeNode* root) {
  13. if(root==NULL)return 0;
  14. dfs(root);
  15. return m;
  16. }
  17. int depth=0;
  18. int m = INT_MIN;
  19. };