算法训练day14 二叉树递归遍历、迭代遍历、统一遍历

发布时间 2023-09-20 00:16:15作者: 烫烫烫汤圆

算法训练day14 二叉树递归遍历、迭代遍历、统一遍历

递归遍历

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

94. 二叉树的中序遍历 - 力扣(LeetCode)

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

代码随想录 (programmercarl.com)

  • 先序遍历

  • class Solution
    {
    public:
        void traversal(TreeNode *cur, vector<int> &result)
        {
            if (cur == nullptr)
                return;
            result.push_back(cur->val);
            traversal(cur->left, result);
            traversal(cur->right, result);
        }
        vector<int> preorderTraversal(TreeNode *root)
        {
            vector<int> result;
            traversal(root, result);
            return result;
        }
    };
    
  • 中序遍历

  • class Solution
    {
    public:
        void traversal(TreeNode *cur, vector<int> &result)
        {
            if (cur == nullptr)
                return;
    
            traversal(cur->left, result);
            result.push_back(cur->val);
            traversal(cur->right, result);
        }
        vector<int> inorderTraversal(TreeNode *root)
        {
            vector<int> result;
            traversal(root, result);
            return result;
        }
    };
    
  • 后序遍历

  • class Solution
    {
    public:
        void traversal(TreeNode *cur, vector<int> &vec)
        {
            if (cur == NULL)
                return;
            traversal(cur->left, vec);
            traversal(cur->right, vec);
            vec.push_back(cur->val);
        }
        vector<int> postorderTraversal(TreeNode *root)
        {
            vector<int> result;
            traversal(root, result);
            return result;
        }
    };
    

迭代遍历

统一遍历