题解 | #牛群的二叉树排序#
牛群的二叉树排序
https://www.nowcoder.com/practice/a3a8756cbb13493ab4cf5d73c853d5cd
1. 层序遍历生成完全二叉树。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cows int整型vector
* @return TreeNode类
*/
TreeNode* create(int sum, int num){
if(!sum) return nullptr;
queue<TreeNode*> tree;
TreeNode* st = new TreeNode(num);
TreeNode* ret = st;
tree.push(st);
int cnt = 1;
while(cnt < sum){
TreeNode* tmp = tree.front();
tree.pop();
tmp->left = new TreeNode(num);
tree.push(tmp->left);
if(++cnt >= sum) break;
tmp->right = new TreeNode(num);
tree.push(tmp->right);
++cnt;
}return ret;
}
TreeNode* sortCowsTree(vector<int>& cows) {
int nums[2]={0};
for(auto num : cows){
nums[num]++;
}
TreeNode* r = new TreeNode(-1);
r->left = create(nums[0], 0);
r->right = create(nums[1], 1);
return r;
}
};
查看11道真题和解析