{"id":1373,"date":"2021-01-22T11:28:16","date_gmt":"2021-01-22T03:28:16","guid":{"rendered":"http:\/\/47.101.202.111\/?p=1373"},"modified":"2021-03-07T00:17:15","modified_gmt":"2021-03-06T16:17:15","slug":"%e6%a0%91%e7%bb%93%e6%9e%84%e5%88%9d%e6%ad%a5-%e4%ba%8c%e5%8f%89%e6%a0%91","status":"publish","type":"post","link":"http:\/\/139.196.114.170\/?p=1373","title":{"rendered":"\u4e8c\u53c9\u6811\u7684\u904d\u5386\u4e0e\u5efa\u7acb &#8211; \u6811\u7ed3\u6784\u57fa\u7840"},"content":{"rendered":"<h2>\u4e8c\u53c9\u6811<\/h2>\n<p>\u4e8c\u53c9\u6811\u7ed3\u6784\u5982\u4e0b<\/p>\n<pre lang=\"C\">\n    struct TreeNode {\n        int val;\n        TreeNode *left;\n        TreeNode *right;\n    };\n<\/pre>\n<p>\u4e8c\u53c9\u6811\u7684\u5c42\u5e8f\u904d\u5386\u5b9e\u8d28\u662f <strong>BFS\u7b97\u6cd5<\/strong><\/p>\n<p>\u4e09\u79cd\u987a\u5e8f\u7684\u4e8c\u53c9\u6811\u904d\u5386\u5b9e\u8d28\u662f <strong>DFS\u7684\u4e8c\u53c9\u9012\u5f52\u6811\u8c03\u7528\u8f68\u8ff9<\/strong><\/p>\n<p>\u57fa\u4e8e <strong>\u9012\u5f52<\/strong> \u6216 <strong>\u8fed\u4ee3<\/strong> \u601d\u60f3\u52a0\u4ee5\u8c03\u6574\uff0c\u4e8c\u53c9\u6811\u76f8\u5173\u95ee\u9898\u5747\u53ef\u5f97\u5230\u89e3\u51b3<\/p>\n<h2>\u4e8c\u53c9\u6811\u904d\u5386<\/h2>\n<h3>\u5c42\u5e8f\u904d\u5386<\/h3>\n<pre><code class=\"language-cpp \">    void levelOrder(Node *root)\n    {\n        if(!root) return;\n        queue&lt;Node *&gt; q;\n        q.push(root);\n        while(!q.empty())\n        {\n            Node *x = q.front();\n            q.pop();\n            operation(x);\n            q.push(x-&gt;left);\n            q.push(x-&gt;right);\n        }\n    }\n<\/code><\/pre>\n<h3>\u6309\u5c42\u904d\u5386<\/h3>\n<pre><code class=\"language-cpp \">    void levelOrder(Node *root)\n    {\n        if(!root) return;\n        queue&lt;Node *&gt; q;\n        q.push(root);\n        while(!q.empty())\n        {\n            int n = q.size();\n            for(int i = 0; i &lt; n; i++)\n            {\n                Node *x = q.front();\n                q.pop();\n                operation(x);\n                if(x-&gt;left) q.push(x-&gt;left);\n                if(x-&gt;right) q.push(x-&gt;right);\n            }\n        }\n    }\n<\/code><\/pre>\n<h3>\u4e09\u79cd\u904d\u5386\u601d\u60f3<\/h3>\n<p><strong>\u81ea\u9876\u5411\u4e0b<\/strong> \u5904\u7406\u65f6\u6838\u5fc3\u64cd\u4f5c\u7f6e\u4e8e <strong>\u524d\u5e8f<\/strong> \u5904\u7406<\/p>\n<p><strong>\u81ea\u5e95\u5411\u4e0a<\/strong> \u5904\u7406\u65f6\u6838\u5fc3\u64cd\u4f5c\u7f6e\u4e8e <strong>\u540e\u5e8f<\/strong> \u5904\u7406<\/p>\n<h4>\u524d\u5e8f\u904d\u5386<\/h4>\n<h5>\u9012\u5f52<\/h5>\n<pre><code class=\"language-cpp \">    void traverse(Node *root)\n    {\n        if(root != nullptr)\n        {\n            preOperation();\n            traverse(root -&gt; left);\n            traverse(root -&gt; right);\n        }\n    }\n<\/code><\/pre>\n<h5>\u8fed\u4ee3<\/h5>\n<pre><code class=\"language-cpp \">    void traverse(Node *root)\n    {\n        if(root != nullptr)\n        {\n            stack&lt;Node *&gt; stk;\n            Node *node = root;\n            while(!stk.empty() || node != nullptr)\n            {\n                while(node != nullptr)\n                {\n                    preOperation();\n                    stk.push(node);\n                    node = node -&gt; left;\n                }\n\n                node = stk.top();\n                stk.pop();\n                node = node -&gt; right;\n            }\n        }\n\n        else return;\n    }\n<\/code><\/pre>\n<h4>\u4e2d\u5e8f\u904d\u5386<\/h4>\n<h5>\u9012\u5f52<\/h5>\n<pre><code class=\"language-cpp \">    void traverse(Node *root)\n    {\n        if(root != nullptr)\n        {\n            traverse(root -&gt; left);\n            inOperation();\n            traverse(root -&gt; right);\n        }\n    }\n<\/code><\/pre>\n<h5>\u8fed\u4ee3<\/h5>\n<h4>\u540e\u5e8f\u904d\u5386<\/h4>\n<h5>\u9012\u5f52<\/h5>\n<pre><code class=\"language-cpp \">    void traverse(Node *root)\n    {\n        if(root != nullptr)\n        {\n            traverse(root -&gt; left);\n            traverse(root -&gt; right);\n            postOperation();\n        }\n    }\n<\/code><\/pre>\n<h5>\u8fed\u4ee3<\/h5>\n<h2>\u5efa\u7acb\u4e8c\u53c9\u6811<\/h2>\n<h3>\u524d\u5e8f\u548c\u4e2d\u5e8f\u5efa\u7acb\u4e8c\u53c9\u6811<\/h3>\n<h4>\u9012\u5f52<\/h4>\n<pre><code class=\"language-cpp \">    vector&lt;int&gt; preorder = {1, 2, 4, 8, 9, 5, 10, 3, 6, 7, 11};\n    vector&lt;int&gt; inorder  = {8, 4, 9, 2, 5, 10, 1, 6, 3, 11, 7};\n\n    TreeNode *buildTree()\n    {\n        int n = preorder.size();\n        if (n &lt;= 0) return nullptr;\n        return build(0, 0, n - 1);\n    }\n\n    TreeNode *build(int pStart, int iStart, int iEnd)\n    {\n        if (iStart &gt; iEnd) return nullptr;\n\n        int rVal = preorder[pStart];\n        int i = iStart;\n        while (inorder[i] != rVal) i++;\n        int lNum = i - iStart;\n\n        TreeNode *left = build(pStart + 1, iStart, i - 1);\n        TreeNode *right = build(pStart + lNum + 1, i + 1, iEnd);\n        return new TreeNode(rVal, left, right);\n    }\n<\/code><\/pre>\n<h4>\u8fed\u4ee3<\/h4>\n<h3>\u540e\u5e8f\u548c\u4e2d\u5e8f\u5efa\u7acb\u4e8c\u53c9\u6811<\/h3>\n<h4>\u9012\u5f52<\/h4>\n<pre><code class=\"language-cpp \">    vector&lt;int&gt; postorder = {8, 9, 4, 10, 5, 2, 6, 11, 7, 3, 1};\n    vector&lt;int&gt; inorder   = {8, 4, 9, 2, 5, 10, 1, 6, 3, 11, 7};\n\n    TreeNode *buildTree()\n    {\n        int n = postorder.size();\n        if (n &lt;= 0) return nullptr;\n        return build(n - 1, 0, n - 1);\n    }\n\n    TreeNode *build(int pEnd, int iStart, int iEnd)\n    {\n        if (iStart &gt; iEnd) return nullptr;\n\n        int rVal = postorder[pEnd];\n        int i = iEnd;\n        for (; inorder[i] != rVal; i--);\n        int rNum = iEnd - i;\n\n        TreeNode *left = build(pEnd - rNum - 1, iStart, i - 1);\n        TreeNode *right = build(pEnd - 1, i + 1, iEnd);\n        return new TreeNode(rVal, left, right);\n    }\n<\/code><\/pre>\n<h4>\u8fed\u4ee3<\/h4>\n","protected":false},"excerpt":{"rendered":"<p>\u4e8c\u53c9\u6811 \u4e8c\u53c9\u6811\u7ed3\u6784\u5982\u4e0b struct TreeNode { int val; TreeNode *left;  &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/139.196.114.170\/?p=1373\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201c\u4e8c\u53c9\u6811\u7684\u904d\u5386\u4e0e\u5efa\u7acb &#8211; \u6811\u7ed3\u6784\u57fa\u7840\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/posts\/1373"}],"collection":[{"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/139.196.114.170\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1373"}],"version-history":[{"count":31,"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/posts\/1373\/revisions"}],"predecessor-version":[{"id":1554,"href":"http:\/\/139.196.114.170\/index.php?rest_route=\/wp\/v2\/posts\/1373\/revisions\/1554"}],"wp:attachment":[{"href":"http:\/\/139.196.114.170\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/139.196.114.170\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1373"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/139.196.114.170\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}