演算法-求二叉樹的最大深度
阿新 • • 發佈:2020-09-13
1.題目
求給定二叉樹的最大深度(最大深度是指樹的根結點到最遠葉子結點的最長路徑上結點的數量)(程式碼在牛客網上通過)
2.思路
3.程式碼
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode類 * @return int整型 */ /* 方法一:層序遍歷*/ int maxDepth(TreeNode* root) { queue<TreeNode*> res; queue<int> num; int numb = 0; res.push(root); TreeNode* cur = root; if(!root){ numb = 0; return numb; } while(!res.empty()){ numb++;int len = res.size(); for(int i=0;i<len;i++){ cur = res.front(); res.pop(); if(cur->left) res.push(cur->left); if(cur->right) res.push(cur->right); } } return numb; } /* 方法二:遞迴*/ int maxDepth(TreeNode* root) { if(!root){ return 0; } return 1+std::max(maxDepth(root->left),maxDepth(root->right)); } };