题解 | #牛群的二叉树排序#

牛群的二叉树排序

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;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务