递归:
/** * 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) {if(root == nullptr) return 0;return max(maxDepth(root->left),maxDepth(root->right))+1; } };
迭代:
广度优先搜索
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 int maxDepth(TreeNode* root) { 15 int result = 0; 16 if(root == nullptr) return result; 17 queue<TreeNode*> que; 18 que.push(root); 19 while(!que.empty()){ 20 int count = que.size(); 21 result++; 22 for(int i = 0; i < count; i++){ 23 TreeNode* node = que.front(); 24 que.pop(); 25 if(node->left != nullptr) que.push(node->left); 26 if(node->right != nullptr) que.push(node->right); 27 } 28 } 29 return result; 30 } 31 };
广度优先搜索
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 int minDepth(TreeNode* root) { 15 int result = 0; 16 if(root == nullptr) return 0; 17 queue<TreeNode*> que; 18 que.push(root); 19 while(!que.empty()){ 20 int count = que.size(); 21 result++; 22 for(int i = 0; i < count; i++){ 23 TreeNode* node = que.front(); 24 que.pop(); 25 if(node->left == nullptr && node->right == nullptr) 26 return result; 27 if(node->left != nullptr) que.push(node->left); 28 if(node->right != nullptr) que.push(node->right); 29 } 30 } 31 return result; 32 } 33 };
还是广度优先
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 int countNodes(TreeNode* root) { 15 int result = 0; 16 if(root == nullptr) return result; 17 queue<TreeNode*> que; 18 que.push(root); 19 while(!que.empty()){ 20 TreeNode* node = que.front(); 21 que.pop(); 22 result++; 23 if(node->left != nullptr) que.push(node->left); 24 if(node->right != nullptr) que.push(node->right); 25 } 26 return result; 27 } 28 };
浙公网安备 33010602011771号