6.1二叉树的递归遍历

简介: 6.1二叉树的递归遍历

二叉树的递归遍历包括:前、后、中序遍历的递归写法。

一、方法论

递归算法三要素:

  • 确定递归函数的参数和返回值
void traversal(TreeNode* cur, vector<int>& vec)//当前指针和数组
  • 确定终止条件
if (cur == NULL) return;
  • 确定单层递归逻辑

前序遍历是中->左->右的顺序,所以单层递归的逻辑就是先取中节点的数值,在处理左子树和右子树

vec.push_back(cur->val);//中
traversal(cur->left,vec);//左
traversal(cur->right,vec);//右

二、前序遍历完整代码

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

三、中序遍历完整代码

class Solution{
    public:
      void traversal(TreeNode* cur,vector<int>& vec)
        {
            if(cur==NULL) return;
      traversal(cur->left,vec);//左
            vec.push_back(cur->val);//中
      traversal(cur->right,vec);//右
        }
    
      vector<int> preorderTraversal(TreeNode * root)
        {
            vector<int> result;//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> preorderTraversal(TreeNode * root)
        {
            vector<int> result;//result是数组
            traversal(root,result);
            return result;
        }
}

五、题型

目录
相关文章
|
18天前
|
算法
01_二叉树的递归遍历
01_二叉树的递归遍历
|
5月前
|
算法
二叉树的递归遍历和非递归遍历
二叉树的递归遍历和非递归遍历
25 0
|
5月前
递归遍历二叉树
递归遍历二叉树的思路
105 0
|
5月前
|
Linux
求二叉树的先序遍历
求二叉树的先序遍历
|
11月前
|
存储 算法 C++
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
103 0
|
存储 算法 容器
遍历二叉树
大家好,我是王有志。今天我们继续学习数据结构与算法的内容,主要是如何遍历一棵二叉树,那么我们直接开始吧。
59 0
遍历二叉树
|
存储 搜索推荐
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)