码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 998. Maximum Binary Tree II


    A maximum tree is a tree where every node has a value greater than any other value in its subtree.

    You are given the root of a maximum binary tree and an integer val.

    Just as in the previous problem, the given tree was constructed from a list a (root = Construct(a)) recursively with the following Construct(a) routine:

    • If a is empty, return null.
    • Otherwise, let a[i] be the largest element of a. Create a root node with the value a[i].
    • The left child of root will be Construct([a[0], a[1], ..., a[i - 1]]).
    • The right child of root will be Construct([a[i + 1], a[i + 2], ..., a[a.length - 1]]).
    • Return root.

    Note that we were not given a directly, only a root node root = Construct(a).

    Suppose b is a copy of a with the value val appended to it. It is guaranteed that b has unique values.

    Return Construct(b).

    Example 1:

    Input: root = [4,1,3,null,null,2], val = 5
    Output: [5,4,null,1,3,null,null,2]
    Explanation: a = [1,4,2,3], b = [1,4,2,3,5]
    

    Example 2:

    Input: root = [5,2,4,null,1], val = 3
    Output: [5,2,4,null,1,null,3]
    Explanation: a = [2,1,5,4], b = [2,1,5,4,3]
    

    Example 3:

    Input: root = [5,2,3,null,1], val = 4
    Output: [5,2,4,null,1,3]
    Explanation: a = [2,1,5,3], b = [2,1,5,3,4]

    题目:创建最大树,给定一颗最大二叉树,和一个值val, 将val以最右的形式插入二叉树。

    思路:因为val是在构建二叉树的数组最后,因此在二叉树中往右子树找,找到最后一个比val大的节点。将其右子树改为新建节点的左子树,新建节点为其右子节点。代码:

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. class Solution {
    13. public:
    14. TreeNode* insertIntoMaxTree(TreeNode* root, int val) {
    15. TreeNode* node = new TreeNode(val);
    16. if(root && root->val < val) {
    17. node->left = root;
    18. return node;
    19. }
    20. TreeNode* nd = root;
    21. while(nd && nd->right && nd->right->val > val)
    22. nd = nd->right;
    23. node->left = nd->right;
    24. nd->right = node;
    25. return root;
    26. }
    27. };

  • 相关阅读:
    深入讲解Netty那些事儿之从内核角度看IO模型(下)
    什么是幂等性?四种接口幂等性方案详解!
    sqli-labs/Less-50
    本文带你了解透彻云计算(前世,今生,未来)
    vue3路由跳转params传参接收不到
    SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析-中
    基于JAVA运动场所预约管理网站计算机毕业设计源码+系统+数据库+lw文档+部署
    结合RF与1DCNN的多信息融合气温预报方法
    JS判断一个字符串中出现次数最多的字符 统计这个次数
    【云IDE】尝试着操作了云IDE感觉蛮好用的操作步骤总结了一下来看看,提提建议
  • 原文地址:https://blog.csdn.net/qing2019/article/details/126383117
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号