leetcode662+求一棵樹的最大寬度,DFS
阿新 • • 發佈:2018-11-01
https://leetcode.com/problems/maximum-width-of-binary-tree/description/
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: #define LL long long void dfs(TreeNode* r, int depth, LL cur_pos, vector<LL>& left, vector<LL>& right) { if(r==NULL) return; if(left.size()==depth) left.push_back(cur_pos); if(right.size()==depth) right.push_back(cur_pos); right[depth] = cur_pos; dfs(r->left, depth+1, cur_pos*2, left, right); dfs(r->right, depth+1, cur_pos*2+1, left, right); } int widthOfBinaryTree(TreeNode* root) { vector<LL> left, right; dfs(root, 0, 1, left, right); int n = min(left.size(), right.size()); LL ans = 0; for(int i=0; i<n; i++){ ans = max(ans, right[i]-left[i]+1); } return ans; } };