二叉树的递归树遍历介绍 - 极悦
首页 课程 师资 教程 报名

二叉树的递归树遍历介绍

  • 2022-08-29 09:32:23
  • 800次 极悦

递归的模板

1.确定递归函数的参数和返回值

void traversal(TreeNode* node, vector<int>& vec)

node是当前处理节点,vec用来存储结果,无返回值

2.确定终止条件

if (node == NULL) return;

递归结束的标志是当前节点为空

3.确定单层递归的逻辑

前序遍历是中左右顺序,中序遍历是左中右顺序,后序遍历是左右中顺序。根据遍历顺序,即排列下列三行代码,保存结果。

vec.push_back(node->val);
traversal(node->left);
traversal(node->right);

前序遍历

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
    void traversal(TreeNode* node, vector<int>& vec) {
        if (node == NULL) return;
        vec.push_back(node->val); //中
        traversal(node->left);    //左
        traversal(node->right);   //右
    }
}

中序遍历

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
    void traversal(TreeNode* node, vector<int>& vec) {
        if (node == NULL) return;
        traversal(node->left);    //左        
        vec.push_back(node->val); //中  
        traversal(node->right);   //右
    }
}

后序遍历

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
    void traversal(TreeNode* node, vector<int>& vec) {
        if (node == NULL) return;
        traversal(node->left);    //左
        traversal(node->right);   //右
        vec.push_back(node->val); //中
    }
}

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交