ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

42 将有序数组转换为二叉搜索树

42 将有序数组转换为二叉搜索树 给你一个整数数组nums其中元素已经按升序排列请你将其转换为一棵平衡 二叉搜索树。示例 1输入nums [-10,-3,0,5,9]输出[0,-3,9,-10,null,5]解释[0,-10,5,null,-3,null,9] 也将被视为正确答案示例 2输入nums [1,3]输出[3,1]解释[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。提示1 nums.length 104-104 nums[i] 104nums按严格递增顺序排列二叉搜索树的性质左子树条件对于树中的任意一个节点其左子树中所有节点的值都必须小于该节点的值。右子树条件其右子树中所有节点的值都必须大于该节点的值。递归性节点的每一棵子树左子树和右子树本身也必须是一个二叉搜索树遵循同样的规则。思路1、将数组的中点mid作为二叉搜索树的根左边构造左子树右边构造右子树。2、递归运行左边部分又构造一颗二叉搜索树0,mid-1)右边部分也构造一颗二叉搜索树。3、递归结束条件左边界大于右边界左边界小于0右边界大于等于数组的大小。class Solution { public: TreeNode* CreateSubTree(vectorint nums,int left,int right){ if(leftright||left0||rightnums.size()) return nullptr; if(leftright) return new TreeNode(nums[left]); int mid(leftright)/2; TreeNode* midNodenew TreeNode(nums[mid]); midNode-leftCreateSubTree(nums,left,mid-1); midNode-rightCreateSubTree(nums,mid1,right); return midNode; } TreeNode* sortedArrayToBST(vectorint nums) { if(0nums.size()) return nullptr; return CreateSubTree(nums,0,nums.size()-1); } };推荐一个零声教育学习教程个人觉得老师讲得不错分享给大家[LinuxNginx ZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDK等技术内容点击立即学习:链接
返回列表