• leetcode 144.二叉树的前后序遍历(递归和非递归)


    144. 二叉树的前序遍历 - 力扣(LeetCode)

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. // 递归前序遍历
    13. class Solution {
    14. public:
    15. void traversal(TreeNode* cur,vector<int>& vec) {
    16. if(cur == NULL) return;
    17. vec.push_back(cur->val);
    18. traversal(cur->left,vec);
    19. traversal(cur->right,vec);
    20. }
    21. vector<int> preorderTraversal(TreeNode* root) {
    22. vector<int> vec;
    23. traversal(root,vec);
    24. return vec;
    25. }
    26. };
    27. // 非递归前序遍历
    28. class Solution {
    29. public:
    30. vector<int> preorderTraversal(TreeNode* root) {
    31. stack st;
    32. vector<int> res;
    33. if(root == NULL) return res;
    34. st.push(root);
    35. int i = 0;
    36. while(!st.empty()) {
    37. TreeNode* node = st.top(); // 中
    38. st.pop();
    39. res.push_back(node->val);
    40. if(node->right) st.push(node->right); // 右(空节点不入栈)
    41. if(node->left) st.push(node->left); // 右(空节点不入栈)
    42. }
    43. return res;
    44. }
    45. };
    46. /*
    47. 5
    48. 4 6
    49. 1 2
    50. // 第一步
    51. --------------------------------------
    52. |5
    53. --------------------------------------
    54. 5
    55. // 第二步
    56. --------------------------------------
    57. |6 4
    58. --------------------------------------
    59. 5
    60. // 第三步
    61. --------------------------------------
    62. |6
    63. --------------------------------------
    64. 5 4
    65. // 第四步
    66. --------------------------------------
    67. |6 2 1
    68. --------------------------------------
    69. 5 4
    70. // 第五步
    71. --------------------------------------
    72. |6 2
    73. --------------------------------------
    74. 5 4 1
    75. // 第六步
    76. --------------------------------------
    77. |6
    78. --------------------------------------
    79. 5 4 1 2
    80. // 第七步
    81. --------------------------------------
    82. |
    83. --------------------------------------
    84. 5 4 1 2 6
    85. */

    145. 二叉树的后序遍历 - 力扣(LeetCode)

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. // 递归后序遍历
    13. class Solution {
    14. public:
    15. void traversal(TreeNode* cur,vector<int>& vec) {
    16. if(cur == NULL) return;
    17. traversal(cur->left,vec);
    18. traversal(cur->right,vec);
    19. vec.push_back(cur->val);
    20. }
    21. vector<int> postorderTraversal(TreeNode* root) {
    22. vector<int> vec;
    23. traversal(root,vec);
    24. return vec;
    25. }
    26. };
    27. // 前序:中 左 右 -> 中 右 左 (字符串反转)
    28. // -> 左 右 中(后序)
    29. // 非递归后序遍历
    30. class Solution{
    31. public:
    32. vector<int> postorderTraversal(TreeNode* root) {
    33. stack st;
    34. vector<int> res;
    35. if(root==NULL) return res;
    36. st.push(root);
    37. while(!st.empty()) {
    38. TreeNode* node = st.top();
    39. st.pop();
    40. res.push_back(node->val);
    41. if(node->left) st.push(node->left);
    42. if(node->right) st.push(node->right);
    43. }
    44. reverse(res.begin(),res.end());
    45. return res;
    46. }
    47. };

  • 相关阅读:
    机器学习【逻辑回归算法】
    众和策略:612家公司三季报折射经济复苏力度
    [LeetCode周赛复盘] 第 92 场双周赛20221015
    不要动 WindowsApps 文件夹的权限以及更新 win10 版本
    MySql架构模式
    Java中JVM的xmx和xms配置成一样的好处
    MySQL详解
    150000人疯抢的证书究竟是何方神圣?
    Java基础篇--XML简介
    密码学-密码协议之零知识证明
  • 原文地址:https://blog.csdn.net/weixin_41987016/article/details/132947142