{"id":740,"date":"2020-06-29T17:22:17","date_gmt":"2020-06-29T09:22:17","guid":{"rendered":"http:\/\/www.guanhaobo.cn\/?p=740"},"modified":"2020-06-29T17:22:17","modified_gmt":"2020-06-29T09:22:17","slug":"%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e9%81%8d%e5%8e%86","status":"publish","type":"post","link":"https:\/\/www.guanhaobo.cn\/?p=740","title":{"rendered":"\u4e8c\u53c9\u6811\u7684\u904d\u5386"},"content":{"rendered":"<h3>1 \u6570\u636e\u7ed3\u6784<\/h3>\n<h4>1.1 C++<\/h4>\n<pre><code class=\"language-cpp line-numbers\">struct TreeNode\n{\n    int val;\n    struct TreeNode *left;\n    struct TreeNode *right;\n    TreeNode(int x) : val(x), left(NULL), right(NULL)\n    {\n    }\n};\n<\/code><\/pre>\n<h4>1.2 Java<\/h4>\n<pre><code class=\"language-java line-numbers\">class TreeNode {\n    int val = 0;\n    TreeNode left = null;\n    TreeNode right = null;\n    public TreeNode(int val) {\n        this.val = val;\n    }\n}\n<\/code><\/pre>\n<h3>2 \u9012\u5f52\u904d\u5386<\/h3>\n<h4>2.1 \u9012\u5f52\u524d\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u4e2d\u3001\u5de6\u3001\u53f3<\/p>\n<h5>2.1.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    if (!root)\n        return;\n    cout &lt;&lt; root-&gt;val &lt;&lt; \" \";\n    show(root-&gt;left);\n    show(root-&gt;right);\n}\n<\/code><\/pre>\n<h5>2.1.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    if (root == null)\n        return;\n    System.out.print(root.val + \" \");\n    show(root.left);\n    show(root.right);\n}\n<\/code><\/pre>\n<h4>2.2 \u9012\u5f52\u4e2d\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u5de6\u3001\u4e2d\u3001\u53f3<\/p>\n<h5>2.2.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    if (!root)\n        return;\n    show(root-&gt;left);\n    cout &lt;&lt; root-&gt;val &lt;&lt; \" \";\n    show(root-&gt;right);\n}\n<\/code><\/pre>\n<h5>2.2.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    if (root == null)\n        return;\n    show(root.left);\n    System.out.print(root.val + \" \");\n    show(root.right);\n}\n<\/code><\/pre>\n<h4>2.3 \u9012\u5f52\u540e\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u5de6\u3001\u53f3\u3001\u4e2d<\/p>\n<h5>2.3.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    if (!root)\n        return;\n    show(root-&gt;left);\n    show(root-&gt;right);\n    cout &lt;&lt; root-&gt;val &lt;&lt; \" \";\n}\n<\/code><\/pre>\n<h5>2.3.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    if (root == null)\n        return;\n    show(root.left);\n    show(root.right);\n    System.out.print(root.val + \" \");\n}\n<\/code><\/pre>\n<h3>3 \u975e\u9012\u5f52\u904d\u5386<\/h3>\n<p>\u975e\u9012\u5f52\u904d\u5386\uff0c\u4f7f\u7528\u6808\u6765\u5b9e\u73b0\u3002<\/p>\n<h4>3.1 \u975e\u9012\u5f52\u524d\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u4e2d\u3001\u5de6\u3001\u53f3<\/p>\n<p>\u8981\u6ce8\u610f\u538b\u6808\u7684\u987a\u5e8f\uff0c\u540e\u538b\u5165\u7684\u4f1a\u5148\u904d\u5386\u3002<\/p>\n<h5>3.1.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    stack&lt;TreeNode *&gt; s;\n    s.push(root);\n    while (!s.empty())\n    {\n        TreeNode *p = s.top();\n        s.pop();\n        if (p)\n        {\n            cout &lt;&lt; p-&gt;val &lt;&lt; \" \";\n            s.push(p-&gt;right);\n            s.push(p-&gt;left);\n        }\n    }\n}\n<\/code><\/pre>\n<h5>3.1.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    Stack&lt;TreeNode&gt; s = new Stack&lt;&gt;();\n    s.push(root);\n    while (!s.empty()) {\n        TreeNode p = s.pop();\n        if (p != null) {\n            System.out.print(p.val + \" \");\n            s.push(p.right);\n            s.push(p.left);\n        }\n    }\n}\n<\/code><\/pre>\n<h4>3.2 \u975e\u9012\u5f52\u4e2d\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u5de6\u3001\u4e2d\u3001\u53f3<\/p>\n<p>\u4e3b\u8981\u601d\u60f3\uff1a\u5148\u5c06<code>p<\/code>\u6307\u5411<code>root<\/code>\uff0c\u7136\u540e\u8fdb\u884c\u5faa\u73af<br \/>\n1. \u5982\u679c<code>p<\/code>\u4e0d\u4e3a\u7a7a\uff0c\u5c06<code>p<\/code>\u538b\u5165\u6808\u4e2d\uff0c\u6267\u884c<code>p = p-&gt;left<\/code>\u3002<br \/>\n2. \u5982\u679c<code>p<\/code>\u4e3a\u7a7a\uff0c\u4ece\u6808\u9876\u53d6\u51fa\u5143\u7d20\u8d4b\u503c\u7ed9<code>p<\/code>\uff0c\u8f93\u51fa<code>p<\/code>\u5bf9\u5e94\u7684\u503c\uff0c\u6267\u884c<code>p = p-&gt;right<\/code>\u3002<\/p>\n<p>\u7b97\u6cd5\u7684\u96be\u70b9\u5728\u4e8e\u5982\u4f55\u9632\u6b62\u91cd\u590d\u538b\u6808\u3002<\/p>\n<h5>3.2.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    stack&lt;TreeNode *&gt; s;\n    TreeNode *p = root;\n    while (p || !s.empty())\n    {\n        if (p)\n        {\n            s.push(p);\n            p = p-&gt;left;\n        }\n        else\n        {\n            p = s.top();\n            s.pop();\n            cout &lt;&lt; p-&gt;val &lt;&lt; \" \";\n            p = p-&gt;right;\n        }\n    }\n}\n<\/code><\/pre>\n<h5>3.2.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    Stack&lt;TreeNode&gt; s = new Stack&lt;&gt;();\n    TreeNode p = root;\n    while (p != null || !s.empty()) {\n        if (p != null) {\n            s.push(p);\n            p = p.left;\n        } else {\n            p = s.pop();\n            System.out.print(p.val + \" \");\n            p = p.right;\n        }\n    }\n}\n<\/code><\/pre>\n<h4>3.3 \u975e\u9012\u5f52\u540e\u5e8f\u904d\u5386<\/h4>\n<p>\u904d\u5386\u987a\u5e8f\uff1a\u5de6\u3001\u53f3\u3001\u4e2d<\/p>\n<p>\u4e3b\u8981\u601d\u60f3\uff1a\u5148\u8fdb\u884c<code>\u4e2d\u3001\u53f3\u3001\u5de6<\/code>\u7684\u904d\u5386\uff0c\u7c7b\u4f3c\u524d\u5e8f\u904d\u5386\uff0c\u7136\u540e\u5c06\u7ed3\u679c\u9006\u5e8f\u8f93\u51fa\u5373\u53ef\u3002<br \/>\n<a href=\"https:\/\/leetcode-cn.com\/problems\/binary-tree-postorder-traversal\/\">https:\/\/leetcode-cn.com\/problems\/binary-tree-postorder-traversal\/<\/a><\/p>\n<h5>3.3.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">vector&lt;int&gt; postorderTraversal(TreeNode *root)\n{\n    vector&lt;int&gt; v, ans;\n    stack&lt;TreeNode *&gt; s;\n    s.push(root);\n    while (!s.empty())\n    {\n        TreeNode *p = s.top();\n        s.pop();\n        if (p)\n        {\n            v.push_back(p-&gt;val);\n            s.push(p-&gt;left);\n            s.push(p-&gt;right);\n        }\n    }\n    ans = vector&lt;int&gt;(v.rbegin(), v.rend());\n    return ans;\n}\n<\/code><\/pre>\n<h5>3.3.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">class Solution {\n    public List&lt;Integer&gt; postorderTraversal(TreeNode root) {\n        ArrayList&lt;Integer&gt; ans = new ArrayList&lt;&gt;();\n        Stack&lt;TreeNode&gt; s = new Stack&lt;&gt;();\n        s.push(root);\n        while (!s.empty()) {\n            TreeNode p = s.pop();\n            if (p != null) {\n                ans.add(p.val);\n                s.push(p.left);\n                s.push(p.right);\n            }\n        }\n        Collections.reverse(ans);\/\/ \u9006\u5e8f\n        return ans;\n    }\n}\n<\/code><\/pre>\n<h3>4 \u5c42\u6b21\u904d\u5386<\/h3>\n<p>\u5c42\u6b21\u904d\u5386\u662f\u4e00\u5c42\u4e00\u5c42\u7684\u904d\u5386\uff0c\u6bcf\u4e00\u5c42\u4ece\u5de6\u5230\u53f3\u904d\u5386\u3002\u501f\u52a9\u961f\u5217\u7684\u5148\u8fdb\u5148\u51fa\u7684\u7279\u6027\u6765\u5b9e\u73b0\u3002<\/p>\n<h5>4.1 C++<\/h5>\n<pre><code class=\"language-cpp line-numbers\">void show(TreeNode *root)\n{\n    queue&lt;TreeNode *&gt; q;\n    q.push(root);\n    while (!q.empty())\n    {\n        TreeNode *p = q.front();\n        q.pop();\n        if (p)\n        {\n            cout &lt;&lt; p-&gt;val &lt;&lt; \" \";\n            q.push(p-&gt;left);\n            q.push(p-&gt;right);\n        }\n    }\n}\n<\/code><\/pre>\n<h5>4.2 Java<\/h5>\n<pre><code class=\"language-java line-numbers\">public static void show(TreeNode root) {\n    Queue&lt;TreeNode&gt; q = new LinkedList&lt;&gt;();\n    q.add(root);\n    while (!q.isEmpty()) {\n        TreeNode p = q.poll();\n        if (p != null) {\n            System.out.print(p.val + \" \");\n            q.add(p.left);\n            q.add(p.right);\n        }\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1 \u6570\u636e\u7ed3\u6784 1.1 C++ struct TreeNode { int val; struct TreeNo [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[33,52],"class_list":["post-740","post","type-post","status-publish","format-standard","hentry","category-note","tag-33","tag-52"],"_links":{"self":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts\/740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=740"}],"version-history":[{"count":0,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts\/740\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}