当前位置: 首页 > news >正文

hot100---day3

二叉树复习+hot100专题

144. 二叉树的前序遍历 - 力扣(LeetCode)

递归法的前中后序遍历,格式比较一致;

class Solution {
public:
    vector<int>& traversal(TreeNode* root, vector<int>& ans)
    {
        if(root==nullptr) return ans;
        TreeNode* cur =root;
        ans.push_back(cur->val);
        traversal(cur->left, ans);
        traversal(cur->right, ans);
        return ans;
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> ans;
        traversal(root, ans);
        return ans;

    }
};

94. 二叉树的中序遍历 - 力扣(LeetCode)

中序遍历;左中右;

class Solution {
public:
    // void traversal(TreeNode* cur, vector<int>& v)
    // {
    //     if(cur==nullptr) return;
    //     traversal(cur->left,v);
    //     v.push_back(cur->val);
    //     traversal(cur->right,v);
    // }
    void traversal(TreeNode* node, vector<int>& nums)
    {
        if(node==nullptr) return;
        TreeNode* cur = node;
        traversal(cur->left, nums);
        nums.push_back(cur->val);
        traversal(cur->right, nums);
    }
    vector<int> inorderTraversal(TreeNode* root) {
       vector<int> nums;
       traversal(root, nums);
       return nums;
    }
};

145. 二叉树的后序遍历 - 力扣(LeetCode)

class Solution {
public:
    void traversal(TreeNode* node, vector<int>& ans)
    {
        if(node==nullptr) return;
        traversal(node->left, ans);
        traversal(node->right, ans);
        ans.push_back(node->val);
    }
    vector<int> postorderTraversal(TreeNode* root) {
        vector<int> ans;
        traversal(root, ans);
        return ans;
    }
};

递归法:

前序遍历;

思路:利用数据结构栈来实现,前序,中左右,所以碰到的栈顶元素就需要push_back到数组中去;然后对于左右节点,是右节点先进入,然后左节点,这样弹出的时候才是左节点先弹出,然后右节点弹出;

class Solution {
public:

    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> ans;
        if(root==nullptr) return ans;
        stack<TreeNode*> st;
        st.push(root);
        while(!st.empty())
        {
            auto tmp = st.top();
            st.pop();
            ans.push_back(tmp->val);
            if(tmp->right) st.push(tmp->right);
            if(tmp->left) st.push(tmp->left);
        }
        return ans;

    }
};

相关文章:

  • [青基解读二] 2025年国家自然科学基金---时间安排
  • C语言堆学习笔记
  • 将Ubuntu操作系统的安装源设置为阿里云
  • 八大排序算法(C语言实现)
  • JWT令牌
  • 关于单调栈问题的本质的思考
  • vue js-web-screen-shot浏览器截取其他非全屏窗口界面
  • 点击修改按钮图片显示有问题
  • 爬虫解析库:pyquery的详细使用
  • 云电脑接入DeepSeek?探讨ToDesk云电脑、海马云、顺网云的AI潜能
  • 作业day6
  • 面试八股文--数据库基础知识总结(2) MySQL
  • 五十天精通硬件设计第36天-万用表的原理及使用
  • java随堂小记
  • 【MySQL】表的内联和外联
  • Vue3中ref与reactive的区别
  • 垃圾回收算法
  • Freertos中空闲钩子函数的使用
  • 坐标变换及视图变换和透视变换(相机透视模型)
  • 机器学习-05-回归算法-python动画展示
  • 帮人家做网站怎么赚钱/网站诊断工具
  • 珠海建设企业网站的公司/网站seo教程
  • 怎么把自己做的网站传网上/seo引擎优化外包
  • dreamweaver可以做网站/搜索引擎提交入口大全
  • 诚聘php网站开发师/深圳网络营销推广培训
  • qq群引流推广网站/邵阳seo优化