国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站圖片鏈接到視頻怎么做微信營(yíng)銷推廣

網(wǎng)站圖片鏈接到視頻怎么做,微信營(yíng)銷推廣,wordpress底部懸浮導(dǎo)航,鄭州建網(wǎng)站的好處原題鏈接🔗:將有序數(shù)組轉(zhuǎn)換為二叉搜索樹(shù) 難度:簡(jiǎn)單?? 題目 給你一個(gè)整數(shù)數(shù)組 nums ,其中元素已經(jīng)按 升序 排列,請(qǐng)你將其轉(zhuǎn)換為一棵 平衡 二叉搜索樹(shù)。 示例 1: 輸入:nums [-10,-3,0,5,9]…

原題鏈接🔗:將有序數(shù)組轉(zhuǎn)換為二叉搜索樹(shù)
難度:簡(jiǎn)單??

題目

給你一個(gè)整數(shù)數(shù)組 nums ,其中元素已經(jīng)按 升序 排列,請(qǐng)你將其轉(zhuǎn)換為一棵 平衡 二叉搜索樹(shù)。

示例 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] 都是高度平衡二叉搜索樹(shù)。

提示

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 按 嚴(yán)格遞增 順序排列

平衡二叉搜索樹(shù)

  • 平衡二叉搜索樹(shù)(Balanced Binary Search Tree,簡(jiǎn)稱BBST)是一種特殊的二叉搜索樹(shù),它在保持二叉搜索樹(shù)的所有性質(zhì)的同時(shí),還保證了樹(shù)的高度盡可能地小。這通常通過(guò)在插入和刪除操作后重新平衡樹(shù)來(lái)實(shí)現(xiàn),以確保樹(shù)的任何兩個(gè)子樹(shù)的高度差不會(huì)超過(guò)1。

  • 平衡二叉搜索樹(shù)的一個(gè)常見(jiàn)實(shí)現(xiàn)是AVL樹(shù),它是一種自平衡的二叉搜索樹(shù),其名稱來(lái)源于其發(fā)明者Adelson-Velsky和Landis。AVL樹(shù)在每次插入或刪除操作后,都會(huì)進(jìn)行必要的旋轉(zhuǎn)操作來(lái)保持樹(shù)的平衡。

  • AVL樹(shù)的平衡操作包括四種基本的旋轉(zhuǎn):

    • 左旋(Left Rotation):當(dāng)節(jié)點(diǎn)的右子樹(shù)比左子樹(shù)高時(shí),進(jìn)行左旋來(lái)減少樹(shù)的高度。
    • 右旋(Right Rotation):當(dāng)節(jié)點(diǎn)的左子樹(shù)比右子樹(shù)高時(shí),進(jìn)行右旋來(lái)減少樹(shù)的高度。
    • 左右旋(Left-Right Rotation):當(dāng)節(jié)點(diǎn)的左子樹(shù)的右子樹(shù)比左子樹(shù)高時(shí),首先對(duì)左子樹(shù)進(jìn)行右旋,然后對(duì)節(jié)點(diǎn)進(jìn)行左旋。
    • 右左旋(Right-Left Rotation):當(dāng)節(jié)點(diǎn)的右子樹(shù)的左子樹(shù)比右子樹(shù)高時(shí),首先對(duì)右子樹(shù)進(jìn)行左旋,然后對(duì)節(jié)點(diǎn)進(jìn)行右旋。
  • AVL樹(shù)的每個(gè)節(jié)點(diǎn)除了存儲(chǔ)值和指向左右子節(jié)點(diǎn)的指針外,還存儲(chǔ)了一個(gè)平衡因子(balance factor),通常是左子樹(shù)高度和右子樹(shù)高度的差值。節(jié)點(diǎn)的平衡因子只能是-1、0或1。

題解

遞歸法

  1. 解題思路

將一個(gè)有序數(shù)組轉(zhuǎn)換為二叉搜索樹(shù)(BST)的解題思路基于二叉搜索樹(shù)的性質(zhì):左子樹(shù)上所有節(jié)點(diǎn)的值 < 根節(jié)點(diǎn)的值 < 右子樹(shù)上所有節(jié)點(diǎn)的值。對(duì)于一個(gè)有序數(shù)組,我們可以利用數(shù)組的有序性來(lái)快速確定根節(jié)點(diǎn)和左右子樹(shù)的劃分點(diǎn)。

以下是解題步驟:

  • 確定根節(jié)點(diǎn):對(duì)于有序數(shù)組,中間元素(數(shù)組長(zhǎng)度的一半)是一個(gè)很好的根節(jié)點(diǎn)候選,因?yàn)樗梢院芎玫鼐S持左右子樹(shù)的大小平衡。

  • 遞歸構(gòu)建左右子樹(shù):使用數(shù)組下標(biāo)來(lái)劃分,左子樹(shù)包含從數(shù)組開(kāi)始到根節(jié)點(diǎn)前的部分,右子樹(shù)包含從根節(jié)點(diǎn)的下一個(gè)元素到數(shù)組末尾的部分。

  • 遞歸終止條件:當(dāng)子數(shù)組為空時(shí),返回null。

  • 構(gòu)建樹(shù):對(duì)于每個(gè)子數(shù)組,重復(fù)上述步驟,遞歸地構(gòu)建左右子樹(shù)。

  • 返回根節(jié)點(diǎn):遞歸結(jié)束時(shí),返回構(gòu)建的樹(shù)的根節(jié)點(diǎn)。

下面是具體的算法邏輯:

  • 定義一個(gè)遞歸函數(shù)sortedArrayToBST,它接收有序數(shù)組的起始索引和結(jié)束索引作為參數(shù)。
  • 計(jì)算中間索引mid:mid = (start+ end) / 2。
  • 使用mid索引處的值創(chuàng)建一個(gè)新的樹(shù)節(jié)點(diǎn)。
  • 遞歸地調(diào)用sortedArrayToBST來(lái)構(gòu)建左子樹(shù),使用start和mid - 1作為新的參數(shù)。
  • 遞歸地調(diào)用sortedArrayToBST來(lái)構(gòu)建右子樹(shù),使用mid + 1和end作為新的參數(shù)。
  • 將左子樹(shù)和右子樹(shù)分別賦值給新創(chuàng)建的根節(jié)點(diǎn)的左右子節(jié)點(diǎn)。
  • 返回根節(jié)點(diǎn)。
  1. 復(fù)雜度:時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(logn)。

  2. c++ demo

#include <iostream>
#include <vector>// 定義二叉樹(shù)節(jié)點(diǎn)
struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};// 將有序數(shù)組轉(zhuǎn)換為二叉搜索樹(shù)的函數(shù)
class Solution {
public:TreeNode* sortedArrayToBST(std::vector<int>& nums) {return sortedArrayToBSTHelper(nums, 0, nums.size() - 1);}private:TreeNode* sortedArrayToBSTHelper(std::vector<int>& nums, int start, int end) {if (start > end) {return nullptr;}// 選擇中間的元素作為根節(jié)點(diǎn)int mid = start + (end - start) / 2;TreeNode* node = new TreeNode(nums[mid]);// 遞歸地構(gòu)建左子樹(shù)和右子樹(shù)node->left = sortedArrayToBSTHelper(nums, start, mid - 1);node->right = sortedArrayToBSTHelper(nums, mid + 1, end);return node;}
};// 輔助函數(shù):中序遍歷二叉樹(shù)并打印節(jié)點(diǎn)值
void inorderTraversal(TreeNode* node) {if (!node) return;inorderTraversal(node->left);std::cout << node->val << " ";inorderTraversal(node->right);
}// 輔助函數(shù):釋放二叉樹(shù)內(nèi)存
void deleteTree(TreeNode* node) {if (!node) return;deleteTree(node->left);deleteTree(node->right);delete node;
}int main() {// 創(chuàng)建Solution實(shí)例Solution solution;// 有序數(shù)組std::vector<int> nums = { -10, -3, 0, 5, 9 };// 將有序數(shù)組轉(zhuǎn)換為BSTTreeNode* root = solution.sortedArrayToBST(nums);// 中序遍歷BST并打印節(jié)點(diǎn)值std::cout << "Inorder traversal of the constructed BST:" << std::endl;inorderTraversal(root);std::cout << std::endl;// 釋放二叉樹(shù)內(nèi)存deleteTree(root);return 0;
}
  • 輸出結(jié)果:

Inorder traversal of the constructed BST:
-10 -3 0 5 9

  1. demo 倉(cāng)庫(kù)地址:sortedArrayToBST
http://aloenet.com.cn/news/45349.html

相關(guān)文章:

  • 婚慶公司加盟連鎖品牌廣告優(yōu)化
  • 哪個(gè)網(wǎng)站專門做母嬰東營(yíng)網(wǎng)站推廣公司
  • 上海app制作灰色行業(yè)seo
  • 自己建一個(gè)網(wǎng)站難嗎網(wǎng)站怎么營(yíng)銷推廣
  • 五合一小程序網(wǎng)站推廣網(wǎng)站排名
  • 四川網(wǎng)站建設(shè)套餐北京網(wǎng)站seo設(shè)計(jì)
  • ppt做雜志模板下載網(wǎng)站搜索引擎排行榜前十名
  • 免費(fèi)的黃岡網(wǎng)站有哪些代碼系統(tǒng)優(yōu)化的意義
  • 把網(wǎng)站傳到服務(wù)器上怎么做新媒體運(yùn)營(yíng)
  • 做網(wǎng)站是怎樣賺錢深圳全網(wǎng)營(yíng)銷哪里好
  • 網(wǎng)站的排名優(yōu)化怎么做怎么做網(wǎng)頁(yè)設(shè)計(jì)的頁(yè)面
  • js網(wǎng)站模板下載軟文推廣例子
  • 關(guān)于企業(yè)網(wǎng)站建設(shè)的請(qǐng)示高清網(wǎng)站推廣免費(fèi)下載
  • 網(wǎng)站建設(shè) 中企動(dòng)力公司中山做網(wǎng)站推廣公司
  • 營(yíng)銷策劃的流程南昌seo網(wǎng)站排名
  • 網(wǎng)站備案是空間備案還是域名備案友情鏈接大全
  • 設(shè)計(jì)網(wǎng)站的元素萬(wàn)網(wǎng)域名管理入口
  • 做網(wǎng)站需要多少固定帶寬seo人才網(wǎng)
  • 下載網(wǎng)上國(guó)網(wǎng)app汕頭seo收費(fèi)
  • 彩票網(wǎng)站開(kāi)發(fā)風(fēng)險(xiǎn)國(guó)外網(wǎng)站制作
  • 新疆所有的網(wǎng)站百度知道客服
  • 一些網(wǎng)站是用什么顏色做的怎么申請(qǐng)建立網(wǎng)站
  • 網(wǎng)站開(kāi)發(fā)設(shè)計(jì)實(shí)訓(xùn) 報(bào)告蘇州seo關(guān)鍵詞優(yōu)化方法
  • 鹽城有沒(méi)有做網(wǎng)站嗎湖南專業(yè)的關(guān)鍵詞優(yōu)化
  • 鎮(zhèn)江網(wǎng)站制作優(yōu)化老哥們給個(gè)關(guān)鍵詞
  • 怎樣做化妝品公司網(wǎng)站百度產(chǎn)品大全首頁(yè)
  • it運(yùn)維工程師證書湖北seo
  • htm網(wǎng)站模板上海公司網(wǎng)站seo
  • 誰(shuí)教我做啊誰(shuí)會(huì)做網(wǎng)站啊整站排名服務(wù)
  • wordpress 查看訪客站長(zhǎng)工具seo綜合查詢?cè)创a