栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode之144. 二叉树的前序遍历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode之144. 二叉树的前序遍历

递归解法

执行结果:

解题思路:

  • 推荐b站讲递归原理的视频:https://www.bilibili.com/video/BV1fZ4y1p7M9?spm_id_from=333.999.0.0
  • 前序遍历、中序遍历、后续遍历,仅需更改void函数的遍历顺序即可;

语言:C++

class Solution {
public:
    //注意,这里是void声明postorder函数
    void preorder(TreeNode* root, vector &res) {
        //树为空的情况
        if(root == nullptr){return;}

        //遍历顺序,前序遍历、中序遍历、后序遍历仅改此处次序
        res.push_back(root->val);//根
        preorder(root->left,res);//左
        preorder(root->right,res);//右

    }

    //主函数
    vector preorderTraversal(TreeNode* root) {
        //存放结果
        vector res;

        //递归postorder函数
        preorder(root,res);
        
        //返回结果
        return res;
    }
};
迭代解法

执行结果:

解题思路:

  • 推荐b站15分钟二叉树非递归解法视频:https://www.bilibili.com/video/BV1RP4y1G79Z?spm_id_from=333.337.search-card.all.click
  • 前面的讲解也挺好,最好听一下。
  • 下图为代码梳理:

语言:C++

class Solution {
public:
    vector preorderTraversal(TreeNode* root) {
        vector res;
        if(root==nullptr){return res;}

        stack stk;
        TreeNode* cur=root;

        while(!stk.empty()||cur!=nullptr){
            while(cur!=nullptr){
                //根
                res.emplace_back(cur->val);
                //左
                stk.emplace(cur);
                cur=cur->left;
            }
            
            //右
            cur=stk.top();
            stk.pop();
            cur=cur->right;
        }

        return res;
    }
};
细节提升 1.迭代与递归
  • 迭代是循环反馈过程的活动。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
  • 递归指的是不断引用自身,直到引用的唯一已知对象时止的过程。
2.栈的基本操作
  • pop是从栈中弹出最上面的元素并取得它;
  • top是取得栈最上面的元素(但不让它弹出,这个元素还在栈内);
  • push是压入一个元素;
  • empty是判断栈是否空的;
  • makeempty是把栈清空。
3.emplace_back()与push_back()

push_back()方法要调用构造函数和复制构造函数,这也就代表着要先构造一个临时对象,然后把临时的copy构造函数拷贝或者移动到容器最后面。
而emplace_back()在实现时,则是直接在容器的尾部创建这个元素,省去了拷贝或移动元素的过程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号