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 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) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL) return 0; int leftNum = 1 + maxDepth(root->left) ; int rightNum = 1 + maxDepth(root->right); int result = leftNum > rightNum ? leftNum: rightNum ; return result ; } };
重写:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void DFS(TreeNode * root, int len){ if(root->left== NULL && root->right == NULL ){ res = res < len ? len : res; return; } if(root->left != NULL) DFS(root->left, len +1); if(root->right != NULL) DFS(root->right, len+1); } int maxDepth(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL ) return 0; res = 0; DFS(root, 1); return res; } private: int res; };