前言
二叉树的题目还是要会一流程构造函数之类的。其中还有回溯的思想
题目链接
654. 最大二叉树 - 力扣(LeetCode)
一、最大二叉树
思路:还是考察构造二叉树,简单来说就是给你一个数组去构建一个二叉树,递归来解决就可以,复杂来说,给你一个数组,构建一颗每个节点都最大的数。所以我们先循环找到一个最大的根节点,然后再左边和右边构建即可。根节点去划分区间
TreeNode* traversal(vector<int>& nums,int left,int right){if(left>=right) return nullptr;int maxValueIndex=left;for(int i=left+1;i<right;i++){if(nums[i]>nums[maxValueIndex]) maxValueIndex=i;}TreeNode* root=new TreeNode(nums[maxValueIndex]);root->left=traversal(nums,left,maxValueIndex);root->right=traversal(nums,maxValueIndex+1,right);return root;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return traversal(nums,0,nums.size());}
二、合并二叉树
三、二叉搜索树中的搜索
四、验证二叉搜索树