二叉树之练习【3】

二叉树之练习【3】,第1张

好几天没更新了,一直在忙,没能刷题,今日补上~

学习安排根据《代码随想录》leetcode654

 

改题思路很明显,递归调用就好,主要是单层逻辑怎么去想清楚

代码:

寻找最大值:

int maxnum=nums[1];//找最大值

int index=0;//最大值的下标用于分割

for(int i=0;i

{

        if(nums[i]>maxnum){maxnum=nums[i];index=i;}

}

node->val=maxnum;//根节点赋值

最大值左边的区间:

if(index>0)

vectorcurnums(nums.begin(),nums.begin()+index);//左闭右开

node->left=递归(curnums)//左节点赋值 

最大值右边的区间:

if(index

vectorcurnums(nums.begin()+index+1,nums.end());

node->right=递归(curnums); 

完整代码:

 

class Solution {
public:
    TreeNode* constructMaximumBinaryTree(vector& nums) 
    {
        TreeNode*node=new TreeNode;//建立根节点
       //确定终止条件
       if(nums.size()==1)
       {
           node->val=nums[0];
           return node;
       }
       //单层递归逻辑
       int maxnum=nums[0];
       int xB=0;//找最大值
       for(int i=1;ival=maxnum;
       if(xB>0)
       {
        vectorcurnums(nums.begin(),nums.begin()+xB);
        node->left=constructMaximumBinaryTree(curnums);
       }
        if(xBcurnums(nums.begin()+xB+1,nums.end());
        node->right=constructMaximumBinaryTree(curnums);
       }
        return node;

    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/625958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-16
下一篇 2022-04-16

发表评论

登录后才能评论

评论列表(0条)

保存