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.
与Minimum Depth of Binary Tree对照看
解法一:递归,子树高度+1。
/** * Definition for binary tree * 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; else return max(maxDepth(root->left), maxDepth(root->right)) + 1; } };
解法二:深度优先遍历,栈的最大容量即最大深度
/** * Definition for binary tree * 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; stack<TreeNode*> stk; unordered_map<TreeNode*, bool> visited; stk.push(root); int ret = 1; visited[root] = true; while(!stk.empty()) { TreeNode* top = stk.top(); if(top->left && visited[top->left] == false) { stk.push(top->left); ret = max(ret, (int)stk.size()); visited[top->left] = true; continue; } if(top->right && visited[top->right] == false) { stk.push(top->right); ret = max(ret, (int)stk.size()); visited[top->right] = true; continue; } stk.pop(); } return ret; } };