首页 > 其他分享 >day20 - 二叉树 part06

day20 - 二叉树 part06

时间:2023-09-02 14:55:05浏览次数:56  
标签:index right TreeNode nums int day20 part06 二叉树 left

654. 最大二叉树

详解

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* search(vector<int>& nums, int left, int right){
        if(left >= right) return nullptr;
        int index = left;
        for(int i=left+1; i<right; i++)
            if(nums[i] > nums[index])
                index = i;
        
        TreeNode* root = new TreeNode(nums[index]);
        root->left = search(nums, left, index);
        root->right = search(nums, index+1, right);

        return root;
    }

    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
        return search(nums, 0, nums.size());
    }
};

 

标签:index,right,TreeNode,nums,int,day20,part06,二叉树,left
From: https://www.cnblogs.com/zqh2023/p/17673666.html

相关文章

  • 数据结构与算法——二叉树+带你实现表达式树(附源码)
    ......
  • 对动态 DP 和全局平衡二叉树的一点补充解释
    说明:最近在帮高中竞赛教练写讲义,这是本人对讲义中动态DP内容的补充解释(因为主要是对知识点的理解,不太容易用通用的语言表述,也不适合作为讲义内容供读者阅读,所以用的是补充注释的形式)。写的比较抽象也比较初等,仅供意会。1.为什么用矩阵表示转移我们先从一般的角度,用映射的语言......
  • 手撕代码之二叉树
    文章目录一、根据排序数组构造二叉搜索树(leetcode108)二、根据前序遍历和中序遍历构造二叉树(leetcode105)三、二叉树的非递归遍历(leetcode94、144、145)四、二叉树中和为某一值的路径(leetcode112)五、二叉树的最大深度(leetcode104)六、二叉树的层次遍历(leetcode102)七、判断两个二......
  • 二叉树的存储结构和操作算法
    二叉树的存储结构和操作算法二叉树的存储结构1.顺序存储结构(完全二叉树/满二叉树)2.链式存储结构(一般二叉树).顺序存储结构按照满二叉树的结点层次编号,然依次后储存在数组当中如果该二叉树中位置是空的再对应到数组中的时候就使用0来填充.二叉树顺序存储结构的缺点......
  • 第五章 树与二叉树
    一、二叉树链式存储结构 typedefstructBiTNode{ ElemTypedata; structBiTNode*lchild,*rchild; }BiTNode,*BiTree;遍历先序遍历递归版 voidPreOrder(BiTreeT) { if(T!=NULL) { visit(T);//访问根结点 PreOrder(T->lchild);//递归遍历左子树 Pr......
  • 二叉树的层序遍历
    /***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNodeleft,TreeNoderight){......
  • 树和二叉树的基本概念
    树和二叉树的基本概念树的定义树是一个递归的定义了,也就是说树中一个结点和其孩子结点都可以看成一个树.树有多种表示方式但是我们通常使用第一种递归的定义来表示树结构.树的基本术语根结点:非空树中没有前驱结点的结点.结点的度:结点拥有的子树数,也就是该结点向下直接......
  • 剑指Offer 32 - III. 从上到下打印二叉树
    题目链接:剑指Offer32-III.从上到下打印二叉树题目描述:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。解法思路:本题在一题的基础上,区分打印方向,加一个bool型的方向变......
  • 剑指Offer 32 - II. 从上到下打印二叉树 II
    题目链接:剑指Offer32-II.从上到下打印二叉树II题目描述:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。解法思路:本题与上题的唯一区别就是在输出的时候,要将同一层的数输出在一行,这就意味着你需要知道哪些数是在一行的;这里巧妙的利用求队列......
  • 剑指Offer 32 - I. 从上到下打印二叉树
    题目链接:剑指Offer32-I.从上到下打印二叉树题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。解法思路:本题就是从考察二叉树的层序遍历,直接上代码:代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......