3.1 深度优先遍历的递归方式

深度优先遍历 包括三种: 前中后 序 三种 遍历;
这三种遍历都可以通过 递归的方法解决;

递归的条件:

  1. 确定递归函数输出类型, 递归函数的输入参数;

  2. 递归函数中的 终止条件;

  3. 每一递归中, 所需要执行的操作;

此时大家可以做一做leetcode上三道题目,分别是:

144.二叉树的前序遍历
94.二叉树的中序遍历
145.二叉树的后序遍历

1. 前序遍历的递归方式

递归函数的编写;

先序遍历函数:

  1. 新建vector 容器,用于存放遍历的结果;
  2. 调用递归函数;
  3. 返回 遍历结果;
#include "vector"

using namespace std;

struct TreeNode{
    
    
    int val;
    TreeNode* left;
    TreeNode* right;

    // 默认构造函数, 列表形式赋值;
    TreeNode(int x): val(x), left(nullptr), right(nullptr){
    
    }

};


class Solution1{
    
    
public:

    //  递归三要素
    void traversal(TreeNode* cur,  vector<int>& res){
    
      //  1.  递归函数的 返回值类型,  输入参数 的确定;
        // 2.  递归的终止条件;
        if( cur == nullptr)  return;
        // 3.   确定每一次 递归中,所需要执行的操作;
        res.push_back(cur->val);
        traversal(cur->left, res);
        traversal(cur->right, res);
    }

    vector<int>  preOrder(TreeNode* root){
    
    
        vector<int>  result;
        traversal(root, result);
        return  result;
    }
    

};

2. 中序遍历的递归方式;


class Solution2{
    
       // 中序遍历
public:
    void traversal(TreeNode* cur,  vector<int>& res){
    
     //1.  递归函数的输出类型, 输入参数;
        // 2. 递归的终止条件;
        if(cur == nullptr) return;

        // 3.  单层递归中,需要执行的操作;
        traversal(cur->left, res);
        res.push_back(cur->val);
        traversal(cur->right, res);
    }

    vector<int>  inOrder(TreeNode* root){
    
    
        vector<int> result;

        traversal(root,  result);
        return  result;

    }

};



3.后序遍历的 递归方式


class  Solution3{
    
    
public:
    void traversal(TreeNode* cur, vector<int>& res ){
    
    // 1. 确定递归函数的 输出类型,  递归函数的输入参数;
        // 2. 递归的终止条件;
        if(cur == nullptr) return;
        //  3.  单层递归中, 执行的操作
        traversal(cur->left, res);
        traversal(cur->right, res);
        res.push_back(cur->val);
    }


    vector<int>  postOrder(TreeNode* root){
    
    
        vector<int> result;
        traversal(root, result);
        return  result;
    }

};

猜你喜欢

转载自blog.csdn.net/chumingqian/article/details/124496711
3.1