【二叉树】Leetcode 144. 二叉树的前序遍历

题目链接

解题思路

    首先是前序遍历的节点打印顺序:中左右。这个打印顺序和深度优先搜索寻找解的路径一致。

由于这里采用递归的方式解题,所以应当考虑以下3个问题:

1.检查数据合法性以判断是否到达边界并返回

2.递归重复的主体部分

3.设计递归的参数和返回值

对于二叉树的遍历,边界条件是到达叶节点,值为null,此时应当返回到上一层节点。

if(temp == nullptr)
   return;

 递归主体是按照左中右顺序遍历节点。传递的参数是子节点地址。

out.push_back(temp->val);
Traversal(temp->left, out);
Traversal(temp->right, out);

完整代码

class Solution {
public:
    void Traversal(TreeNode* temp, vector<int>& out)
    {
        if(temp == nullptr)
            return;
        out.push_back(temp->val);
        Traversal(temp->left, out);
        Traversal(temp->right, out);
    }

    vector<int> preorderTraversal(TreeNode* root)
    {
        vector<int> out;       //定义output数组储存节点
        Traversal(root, out);  //封装了递归部分
        return out;
    }
}

参考文章:

二叉树理论

二叉树的递归遍历

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy_Xie007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值