码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Day20——最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树


    加油!

    目录

    前言

    解题思路:

    二、合并二叉树

    三、二叉搜索树中的搜索

    四、验证二叉树搜索

    总结


    前言

    今日文案:

     猫喜欢吃鱼,猫却不能下水,鱼喜欢吃蚯蚓,鱼却不能上岸,人生,就是一边拥有,一边失去,一边选择,一边放弃。


    一、最大二叉树

    力扣

    解题思路:

    主要也是分割数组思想。

    1. class Solution {
    2. public:
    3. TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
    4. TreeNode*root=new TreeNode(0);
    5. if(nums.size()==1)
    6. {
    7. root->val=nums[0]; //数组只有一个数的时候,可以直接返回
    8. return root;
    9. }
    10. int max=-100,maxindex=0;
    11. for(int i=0;isize();i++) //遍历数组
    12. {
    13. if(nums[i]>max) //找出最大值及其下标
    14. {
    15. max=nums[i];
    16. maxindex=i;
    17. }
    18. }
    19. root->val=max; //建好中节点数值
    20. if(maxindex>0) //判断左子树是否有元素
    21. {
    22. vector<int> lefttree(nums.begin(),nums.begin()+maxindex);
    23. root->left=constructMaximumBinaryTree(lefttree);
    24. }
    25. if(maxindexsize()-1) //判断右子树是否有元素
    26. {
    27. vector<int> righttree(nums.begin()+maxindex+1,nums.end());
    28. root->right=constructMaximumBinaryTree(righttree);
    29. }
    30. return root;
    31. }
    32. };

    二、合并二叉树

    力扣

    解题思路:

    同时遍历两棵树,同一位置都有就加起来,有空就用另外一棵树补。构造一般用前序。

    1. class Solution {
    2. public:
    3. TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
    4. if(root1==NULL) //一个有空就返回另外一个
    5. {
    6. return root2;
    7. }
    8. if(root2==NULL)
    9. {
    10. return root1;
    11. }
    12. TreeNode*node=new TreeNode(0); //建立节点
    13. node->val=root1->val+root2->val; //都有就加起来
    14. node->left=mergeTrees(root1->left,root2->left); //遍历
    15. node->right=mergeTrees(root1->right,root2->right);
    16. return node;
    17. }
    18. };


    三、二叉搜索树中的搜索

    力扣

    1. class Solution {
    2. public:
    3. TreeNode* searchBST(TreeNode* root, int val) {
    4. if(root==NULL)
    5. {
    6. return NULL;
    7. }
    8. if(root->val==val) //找到了就返回
    9. {
    10. return root;
    11. }
    12. if(root->left==NULL&&root->right==NULL) //叶子节点也返回
    13. {
    14. return NULL;
    15. }
    16. TreeNode*node=NULL; //创建节点存值
    17. if(val>root->val) //根据搜索树的定义,分两边搜索
    18. {
    19. node=searchBST(root->right,val);
    20. }
    21. if(valval)
    22. {
    23. node=searchBST(root->left,val);
    24. }
    25. return node;
    26. }
    27. };

    四、验证二叉树搜索

    1. class Solution {
    2. public:
    3. long long maxval=LONG_MIN; //设定最小值
    4. bool isValidBST(TreeNode* root) {
    5. if(root==0)
    6. {
    7. return true; //空节点就返回
    8. }
    9. bool left=isValidBST(root->left); //左遍历
    10. if(maxvalval) //一层一层赋值,递增
    11. {
    12. maxval=root->val;
    13. }
    14. else //有违法的直接false,就再也没有机会翻身了。
    15. {
    16. return false;
    17. }
    18. bool right=isValidBST(root->right);
    19. return right&&left;
    20. }
    21. };


    总结

    感觉囫囵吞枣,好烦,感觉还是没有分清楚,前中后序遍历的过程,贪多嚼不烂了。

  • 相关阅读:
    快速乘的不同实现方式
    第六十三章 IIS 7 或更高版本的替代选项 (Windows) - 替代选项 4:将 CGI 模块与 NSD 结合使用 - 映射 IRIS 文件扩展名
    艾奇软件怎么下载安装?
    从算盘到云计算:计算机发展的壮丽历程
    R语言ggplot2可视化:ggcharts包的bar_chart函数可视化条形图、bar_chart函数自动排序条形图并水平显示
    HACKTHEBOX——Phonebook
    ES6 Map数据结构
    uploadifive上传工具php版使用
    mysql使用--简单查询
    基于springboot的智慧学习(在线学习考试)系统
  • 原文地址:https://blog.csdn.net/m0_72503424/article/details/127658668
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号