2018-09-10 427. Construct Quad Tree

题意:给你一个NN(N 为2的指数倍数)的矩形方阵,用一种叫做Quad Tree的数型结构表示。
解题思路:一个递归算法。
注意事项:在递归返回的时候,返回值需要用new Node(参,参,参,参,参,参)模型,因为使用new关键字开辟内存的时候,函数返回后内存不会被收走;如果使用普通的声明Node(
,*)模式,该内存为临时内存,当函数返回的时候会将内存抹掉,出现内存访问错误。

/*
// Definition for a QuadTree node.
class Node {
public:
    bool val;
    bool isLeaf;
    Node* topLeft;
    Node* topRight;
    Node* bottomLeft;
    Node* bottomRight;

    Node() {}

    Node(bool _val, bool _isLeaf, Node* _topLeft, Node* _topRight, Node* _bottomLeft, Node* _bottomRight) {
        val = _val;
        isLeaf = _isLeaf;
        topLeft = _topLeft;
        topRight = _topRight;
        bottomLeft = _bottomLeft;
        bottomRight = _bottomRight;
    }
};
*/
class Solution {
public:
    Node* construct(vector<vector<int>>& grid) {
        int sizeNum = grid.size();
        return getQuad(grid, 0, 0, sizeNum, sizeNum);
    }
    
    Node* getQuad(vector<vector<int>>& grid, int startRow, int startCol, int endRow, int endCol){
        bool flg = grid[startRow][startCol];
        int sizeNum = (endRow - startRow) / 2;
        int midRow  = startRow + sizeNum;
        int midCol  = startCol + sizeNum;
        for(int i = startRow; i < endRow; i++){
            for(int j = startCol; j < endCol; j++){
                if(flg != grid[i][j]){
                    return new Node(false, false, getQuad(grid, startRow, startCol, midRow, midCol), getQuad(grid, startRow, midCol, midRow, endCol), getQuad(grid, midRow, startCol, endRow, midCol), getQuad(grid, midRow, midCol, endRow, endCol));
                }
            }
        }
        return new Node(flg, true, NULL, NULL, NULL, NULL);
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,306评论 0 3
  • 这两天把《虞美人盛开的山坡》和《猫的报恩》给看完了。是宫崎骏的动漫社的作品,但是主创一个是宫崎吾朗,两一个也只是社...
    雀岛札记阅读 355评论 0 0
  • 这个题目不吸引人,但是很重要,写这篇文章是源于在4月3号我听了@秦阳的一个关于自学一门知识·体系篇的分享。 网黑如...
    光沐思维阅读 247评论 0 1
  • 岁暮诗 旧年的最后一次圆月 落地成霜 成了诗 镌刻在梦里 月光是归家的号角 终于可以见到母亲的身影 疾驰的火车 以...
    人间雪白乘雪归阅读 379评论 0 3
  • 家人们,下午好! 又是一个新的星期开始了,本周是这学期的第11周。早上的语文课中明显有部分孩子处于神游状态,感觉没...
    阳光温温阅读 190评论 0 1