• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594
            這三題都是二叉樹的層次遍歷,就放一起吧~
            Binary Tree Level Order Traversal:裸的層次遍歷,BFS之

             1 /**
             2  * Definition for binary tree
             3  * struct TreeNode {
             4  *     int val;
             5  *     TreeNode *left;
             6  *     TreeNode *right;
             7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
             8  * };
             9  */
            10 class Solution {
            11 public:
            12     struct Que {
            13         TreeNode *pt;
            14         int depth;
            15     }que[10010];
            16     vector<vector<int> > levelOrder(TreeNode *root) {
            17         vector<vector<int> > res;
            18         if(root == NULL) return res;
            19         int l = 0, r = 1, tdepth = 0;
            20         que[0].pt = root;
            21         que[0].depth = 0;
            22         vector<int> tres;
            23         tres.push_back(root->val);
            24         res.push_back(tres);
            25         tres.clear();
            26         while(l < r) {
            27             TreeNode *tp = que[l].pt;
            28             if(tdepth < que[l].depth) {
            29                 res.push_back(tres);
            30                 tres.clear();
            31             }
            32             if(tp->left != NULL) {
            33                 que[r].pt = tp->left;
            34                 que[r].depth = que[l].depth + 1;
            35                 tres.push_back(tp->left->val);
            36                 ++r;
            37             }
            38             if(tp->right != NULL) {
            39                 que[r].pt = tp->right;
            40                 que[r].depth = que[l].depth + 1;
            41                 tres.push_back(tp->right->val);
            42                 ++r;
            43             }
            44             tdepth = que[l].depth;
            45             ++l;
            46         }
            47         if(!tres.empty()) res.push_back(tres);
            48         return res;
            49     }
            50 };

            Binary Tree Zigzag Level Order Traversal:二叉樹之字形的層次遍歷,加一個記錄節點深度的變量,然后根據深度的奇偶改變遍歷后結果的存儲順序就行
             1 /**
             2  * Definition for binary tree
             3  * struct TreeNode {
             4  *     int val;
             5  *     TreeNode *left;
             6  *     TreeNode *right;
             7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
             8  * };
             9  */
            10 class Solution {
            11 public:
            12     struct Que {
            13         TreeNode *pt;
            14         int depth;
            15     }que[10010];
            16     vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
            17         vector<vector<int> > res;
            18         if(root == NULL) return res;
            19         int l = 0, r = 1, tdepth = 0;
            20         que[0].pt = root;
            21         que[0].depth = 0;
            22         vector<int> tres;
            23         tres.push_back(root->val);
            24         res.push_back(tres);
            25         tres.clear();
            26         while(l < r) {
            27             TreeNode *tp = que[l].pt;
            28             if(tdepth < que[l].depth) {
            29                 if(!(tdepth & 1)) reverse(tres.begin(), tres.end());
            30                 res.push_back(tres);
            31                 tres.clear();
            32             }
            33             if(tp->left != NULL) {
            34                 que[r].pt = tp->left;
            35                 que[r].depth = que[l].depth + 1;
            36                 tres.push_back(tp->left->val);
            37                 ++r;
            38             }
            39             if(tp->right != NULL) {
            40                 que[r].pt = tp->right;
            41                 que[r].depth = que[l].depth + 1;
            42                 tres.push_back(tp->right->val);
            43                 ++r;
            44             }
            45             tdepth = que[l].depth;
            46             ++l;
            47         }
            48         if(!tres.empty()) {
            49             if(tdepth & 1) reverse(tres.begin(), tres.end());
            50             res.push_back(tres);
            51         }
            52         return res;
            53     }
            54 };

            Maximum Depth of Binary Tree:層次遍歷二叉樹求最大深度就行
             1 /**
             2  * Definition for binary tree
             3  * struct TreeNode {
             4  *     int val;
             5  *     TreeNode *left;
             6  *     TreeNode *right;
             7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
             8  * };
             9  */
            10 class Solution {
            11 public:
            12     struct Que {
            13         TreeNode *pt;
            14         int depth;
            15     }que[10010];
            16     int maxDepth(TreeNode *root) {
            17         if(root == NULL) return 0;
            18         int l = 0, r = 1;
            19         que[0].pt = root;
            20         que[0].depth = 1;
            21         while(l < r) {
            22             TreeNode *tp = que[l].pt;
            23             if(tp->left != NULL) {
            24                 que[r].pt = tp->left;
            25                 que[r].depth = que[l].depth + 1;
            26                 ++r;
            27             }
            28             if(tp->right != NULL) {
            29                 que[r].pt = tp->right;
            30                 que[r].depth = que[l].depth + 1;
            31                 ++r;
            32             }
            33             ++l;
            34         }
            35         return que[r - 1].depth;
            36     }
            37 };
            久久996热精品xxxx| 国产V综合V亚洲欧美久久| 97精品国产97久久久久久免费| 999久久久国产精品| 日本亚洲色大成网站WWW久久| 久久久午夜精品| 天堂久久天堂AV色综合| 色偷偷91久久综合噜噜噜噜| 国产2021久久精品| 狠狠色婷婷久久一区二区三区| 久久久精品日本一区二区三区| 久久偷看各类wc女厕嘘嘘| 亚洲伊人久久综合影院| 久久99国产一区二区三区| 99热精品久久只有精品| 99久久精品日本一区二区免费| 伊人久久大香线蕉亚洲| 久久精品综合网| 久久久久亚洲AV无码麻豆| 久久久久亚洲Av无码专| 91精品国产91久久久久久| 国产人久久人人人人爽| 久久福利青草精品资源站免费| 精品久久综合1区2区3区激情| 久久久精品久久久久久| 久久久噜噜噜久久中文字幕色伊伊 | 99久久夜色精品国产网站| 亚洲va中文字幕无码久久不卡| 国内精品久久九九国产精品| 日本WV一本一道久久香蕉| 久久99精品久久久久久久不卡| 久久人妻少妇嫩草AV蜜桃| 久久天天婷婷五月俺也去| 国产高潮国产高潮久久久91 | 精品久久久久久国产免费了| 久久人爽人人爽人人片AV | 1000部精品久久久久久久久| 久久成人18免费网站| 综合久久一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久99国产精品一区二区|