亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

二叉樹遞歸四題精講:平衡判斷、路徑回溯、左葉子與完全二叉樹優(yōu)化

二叉樹遞歸四題精講:平衡判斷、路徑回溯、左葉子與完全二叉樹優(yōu)化 第十五天的題單一拉出來我第一反應(yīng)是“這四道題都不難”??烧鎰?dòng)手刷完才發(fā)現(xiàn)它們湊在一起是有講究的110、257、404、222幾乎把二叉樹遞歸里最核心的幾件事——后序求高度、前序收集路徑、用父節(jié)點(diǎn)視角判斷特殊節(jié)點(diǎn)、利用完全二叉樹特性優(yōu)化——各出了一道代表題。如果你也在跟代碼隨想錄算法訓(xùn)練營(yíng)刷二叉樹這一天值得停下來多琢磨一會(huì)兒別急著追求AC數(shù)量把這四道題的“為什么”吃透后面寫回溯和遞歸會(huì)順手很多。1. 第十五天的四道題正好湊齊二叉樹遞歸的三種套路1.1 一天的題單難度梯度其實(shí)很講究先說結(jié)論這四道題按難度排大概是 404 257 ≈ 110 222。但難度并非唯一線索更重要的是它們?cè)谶f歸思路上剛好互補(bǔ)。110平衡二叉樹要求你從子樹返回高度本質(zhì)是后序遍歷左-右-中因?yàn)楸仨毾戎雷笥易訕涞母叨炔拍芘袛喈?dāng)前節(jié)點(diǎn)是否平衡。257二叉樹的所有路徑要求從根走到葉子邊收集邊記錄本質(zhì)是前序遍歷中-左-右因?yàn)槁窂降捻樞蛱烊皇菑母_始的。404左葉子之和看起來簡(jiǎn)單但真正的坎在于“左葉子”這個(gè)定義本身——它必須靠父節(jié)點(diǎn)來判定這是很多新手繞不過去的彎。222完全二叉樹的節(jié)點(diǎn)個(gè)數(shù)如果只求暴力解一兩分鐘就能寫出來可一旦想到“完全二叉樹”四個(gè)字你就應(yīng)該停下來想一想能不能利用滿二叉樹的數(shù)學(xué)性質(zhì)把復(fù)雜度從 O(n) 降到 O(log^2 n)。所以這一天的題單相當(dāng)于把二叉樹遞歸里的三種“手感”都練了一遍求值用后序、收集路徑用前序、特性利用靠觀察和數(shù)學(xué)推導(dǎo)。這四道題我強(qiáng)烈建議不要只看題解自己先寫一版再對(duì)照優(yōu)化版收獲會(huì)翻倍。1.2 適合誰來讀讀之前需要什么基礎(chǔ)這篇復(fù)盤適合正在刷二叉樹、但還處在“每次遞歸都要重新想一遍”階段的讀者。如果你能區(qū)分先序/中序/后序的區(qū)別、能寫出遞歸版前序遍歷那么接下來的內(nèi)容你完全吃得下。如果你連遞歸都還有些發(fā)怵也沒關(guān)系我會(huì)先把每道題的遞歸三步曲拆開講清楚。刷二叉樹題目我一直堅(jiān)持一個(gè)理念不要背題要背“套路”。樹這類結(jié)構(gòu)天生適合遞歸因?yàn)闃涞淖訕溥€是樹。而遞歸的難點(diǎn)從來不在“怎么寫”而在“這個(gè)函數(shù)該返回什么、什么時(shí)候停下來、單層邏輯做什么”。這四道題恰好就是把這三個(gè)問題分別放大給你看。2. 110. 平衡二叉樹先分清高度和深度后序遞歸才不會(huì)亂2.1 題目在考什么一顆樹到底怎么算“平衡”力扣 110 的平衡二叉樹定義每個(gè)節(jié)點(diǎn)的左右子樹高度差絕對(duì)值不超過 1。網(wǎng)上很多題解寫得很隨意但這里有個(gè)概念陷阱就是“高度”和“深度”經(jīng)常被混著用。我自己的記憶方法是深度是往下的從根到你所在節(jié)點(diǎn)高度是往上的從你所在節(jié)點(diǎn)到葉子。所以根節(jié)點(diǎn)的深度最大葉子節(jié)點(diǎn)的深度最小反過來葉子節(jié)點(diǎn)的高度最小約定為 1根節(jié)點(diǎn)的高度是整棵樹的最大深度。判斷一顆樹是否平衡邏輯上需要先知道左右子樹各自有多高再比較差值。這意味著在遞歸返回時(shí)你必須要得到“這棵子樹到底有多高”這個(gè)數(shù)字。如果某個(gè)子樹已經(jīng)不平衡了還需要繼續(xù)算它的高度嗎不需要直接向上傳遞一個(gè)“失敗信號(hào)”讓整棵樹提前結(jié)束。這個(gè)題目最容易犯的錯(cuò)誤是想著“在每個(gè)節(jié)點(diǎn)用前序遍歷求它的深度再比較左右孩子深度的差”。這個(gè)思路看著對(duì)但實(shí)際上你求出來的“深度”并不是該節(jié)點(diǎn)子樹的高度而且每到一個(gè)節(jié)點(diǎn)都重新向下數(shù)一遍深度會(huì)帶來大量重復(fù)計(jì)算。正確姿勢(shì)只有一個(gè)用后序遍歷求高度。2.2 遞歸三部曲落地用-1既當(dāng)高度又當(dāng)失衡標(biāo)記遞歸不管多繞先想三件事參數(shù)和返回值是什么、終止條件是什么、單層邏輯做什么。這道題我要返回高度但還要額外表達(dá)“這顆子樹已經(jīng)不平衡了”。兩個(gè)信息合并我的返回值就用一個(gè) int正常情況返回高度一旦發(fā)現(xiàn)不平衡就返回 -1。這樣上層節(jié)點(diǎn)拿到 -1 后立刻就能判斷出整棵樹已經(jīng)不平衡沒必要再往下朝右子樹遞歸了。class Solution { public boolean isBalanced(TreeNode root) { return getHeight(root) ! -1; } private int getHeight(TreeNode node) { if (node null) { return 0; // 空節(jié)點(diǎn)高度為0 } int leftHeight getHeight(node.left); if (leftHeight -1) { return -1; // 左子樹已經(jīng)不平衡 } int rightHeight getHeight(node.right); if (rightHeight -1) { return -1; // 右子樹已經(jīng)不平衡 } // 當(dāng)前節(jié)點(diǎn)的平衡性左右高度差不能超過1 if (Math.abs(leftHeight - rightHeight) 1) { return -1; } // 返回當(dāng)前節(jié)點(diǎn)作為根的子樹的真實(shí)高度 return Math.max(leftHeight, rightHeight) 1; } }這段代碼建議親手抄一遍再默寫一遍。注意最后一行是Math.max(left, right) 1不是Math.min。這個(gè) 1 代表把當(dāng)前節(jié)點(diǎn)自己也算進(jìn)高度里這是整段遞歸字?jǐn)?shù)最少卻最容易出錯(cuò)的地方。2.3 提前返回的剪枝效果別把明明不平衡的子樹繼續(xù)算下去遞歸版里連續(xù)兩個(gè)if (leftHeight -1) return -1;看起來多此一舉實(shí)際是剪枝的精髓。我刷題時(shí)一開始偷懶省略了這兩個(gè)判斷心想反正最后Math.abs也會(huì)發(fā)現(xiàn)不平衡。但仔細(xì)一想如果左子樹已經(jīng)返回 -1說明左子樹內(nèi)部已經(jīng)失衡這時(shí)候繼續(xù)算右子樹的高度沒有任何意義純屬浪費(fèi)時(shí)間。極端一點(diǎn)的情況是這樣一顆樹根節(jié)點(diǎn)的左子樹嚴(yán)重失衡而右子樹是節(jié)點(diǎn)數(shù)量極大的完全二叉樹。如果不剪枝左子樹發(fā)現(xiàn)失衡后代碼還要去把右子樹完整遍歷一遍白白花費(fèi) O(n) 時(shí)間剪枝后左子樹返回 -1 的那一剎那整個(gè)遞歸就一路向上退出右子樹根本不會(huì)被訪問到。這種“短路求值”思想在后面的回溯剪枝、動(dòng)態(tài)規(guī)劃優(yōu)化里會(huì)反復(fù)出現(xiàn)越早習(xí)慣越省力。2.4 迭代思路能懂更好不懂也不影響做題遞歸版已經(jīng)足夠應(yīng)付面試和筆試但面試官偶爾會(huì)追問一句“你能用迭代寫嗎”。迭代思路其實(shí)是用顯式棧模擬后序遍歷同時(shí)用一個(gè)哈希表記錄每個(gè)節(jié)點(diǎn)的高度?;咎茁肥莾蓪拥谝粚佑脳DM“左-右-中”的后序訪問順序。遍歷到中間節(jié)點(diǎn)時(shí)先不斷把左孩子、右孩子壓棧確保左右子樹都處理完了才輪到中間節(jié)點(diǎn)。第二層每個(gè)中間節(jié)點(diǎn)出棧時(shí)從哈希表里查詢左右子樹的高度比較差值然后把當(dāng)前節(jié)點(diǎn)的高度Math.max(left, right) 1存進(jìn)哈希表。我在這里不放完整迭代代碼因?yàn)楹笮虻旧肀容^繞很容易把初學(xué)者整懵。如果你目前還在建立遞歸直覺優(yōu)先吃透遞歸版等遞歸版熟練了再看迭代作為思維擴(kuò)展。面試中能寫出簡(jiǎn)潔遞歸并解釋清楚剪枝邏輯已經(jīng)能拿不錯(cuò)的分?jǐn)?shù)。3. 257. 二叉樹的所有路徑前序遍歷收集路徑遞歸返回時(shí)記得撤銷3.1 為什么一定要前序遍歷257 題要求返回所有從根到葉子的路徑比如[1-2-5, 1-3]。路徑的起點(diǎn)永遠(yuǎn)是根順序永遠(yuǎn)是“根在左、葉子在右”所以遍歷順序天然就是先訪問根再訪問左孩子再訪問右孩子也就是前序遍歷。中序和后序遍歷都會(huì)把根節(jié)點(diǎn)留在中間或最后處理你想按“從根到葉子”的順序拼接路徑還得額外處理字符串順序非常別扭。這也是一個(gè)判斷經(jīng)驗(yàn)看到“從根到葉子”這種強(qiáng)依賴順序的需求優(yōu)先想前序遍歷。3.2 兩種實(shí)現(xiàn)String的天然回溯 與 StringBuilder的顯式回溯這道題最直觀的寫法是遞歸時(shí)傳一個(gè) String因?yàn)?Java 的 String 是不可變的每次拼接都會(huì)生成新對(duì)象天然幫你“隔離”了路徑污染。class Solution { public ListString binaryTreePaths(TreeNode root) { ListString result new ArrayList(); if (root null) { return result; } dfs(root, , result); return result; } private void dfs(TreeNode node, String path, ListString result) { // 到達(dá)葉子生成一條完整路徑 if (node.left null node.right null) { result.add(path node.val); return; } String nextPath path node.val -; if (node.left ! null) { dfs(node.left, nextPath, result); } if (node.right ! null) { dfs(node.right, nextPath, result); } } }這種寫法的優(yōu)點(diǎn)是思路清晰新手也好懂缺點(diǎn)是每層遞歸都會(huì)新建字符串在節(jié)點(diǎn)數(shù)量很大的場(chǎng)景下會(huì)有一定開銷。但算法訓(xùn)練階段先跑通邏輯比摳性能重要。用可變對(duì)象就得小心了。拿 StringBuilder 舉例由于它是可變的遞歸返回后如果不手動(dòng)“撤銷”剛才追加的內(nèi)容左子樹殘留的路徑片段會(huì)污染右子樹的拼接結(jié)果。private void dfs(TreeNode node, StringBuilder sb, ListString result) { // 記錄進(jìn)入當(dāng)前節(jié)點(diǎn)前 sb 的長(zhǎng)度方便退出時(shí)回退 int len sb.length(); if (len 0) { sb.append(-); } sb.append(node.val); if (node.left null node.right null) { result.add(sb.toString()); } else { if (node.left ! null) { dfs(node.left, sb, result); } if (node.right ! null) { dfs(node.right, sb, result); } } // 核心回溯恢復(fù)到進(jìn)入當(dāng)前節(jié)點(diǎn)之前的狀態(tài) sb.setLength(len); }重點(diǎn)看最后一行sb.setLength(len)。我在很多培訓(xùn)班同學(xué)的代碼里見過這種 bug字符串拼接對(duì)了結(jié)果忘了回退最后輸出的路徑越長(zhǎng)越長(zhǎng)或者把左子樹的節(jié)點(diǎn)串到了右子樹路徑里。如果你也遇到路徑“串味”的情況十有八九是撤銷沒寫對(duì)。3.3 邊界條件空樹、單節(jié)點(diǎn)和“1-”的干擾這道題的邊界條件不多但每一個(gè)都很容易踩空樹返回空列表。我在代碼開頭就先判了root null。只有一個(gè)根節(jié)點(diǎn)路徑應(yīng)該是1而不是1-。這個(gè)“多余的 -”是新手高頻翻車點(diǎn)。所以拼接邏輯里我判斷了len 0才加箭頭保證根節(jié)點(diǎn)前沒有-。葉子節(jié)點(diǎn)的判斷必須嚴(yán)格為node.left null node.right null。只判斷一邊為空是不嚴(yán)謹(jǐn)?shù)谋热缫粋€(gè)節(jié)點(diǎn)只有左孩子沒有右孩子它不是葉子路徑還必須繼續(xù)走到真正的葉子。我的建議是寫完代碼后自己輸入三個(gè)測(cè)試用例[]、[1]、[1,2,3]手算一下期望輸出再跑基本能把邊界問題全部暴露出來。3.4 這會(huì)是你第一次真正理解“回溯”結(jié)構(gòu)回溯這個(gè)詞在 257 這道題里被體現(xiàn)得淋漓盡致。你在 StringBuilder 里追加節(jié)點(diǎn)進(jìn)入子樹然后再遞歸回來把字符串縮短——這就是標(biāo)準(zhǔn)回溯模板的原型。把這段邏輯抽象一下記錄當(dāng)前現(xiàn)場(chǎng) 做出選擇追加當(dāng)前節(jié)點(diǎn) 遞歸進(jìn)入下一層 撤銷選擇回到現(xiàn)場(chǎng)這個(gè)模板你會(huì)反復(fù)見到組合問題、排列問題、子集問題本質(zhì)上都是這種“做選擇-遞歸-撤銷”的循環(huán)。所以 257 看起來只是二叉樹路徑題實(shí)際上是你第一次在代碼里直觀地看見回溯。我強(qiáng)烈建議你在刷完這道題后把上面的抽象模板抄在筆記里后面學(xué)回溯時(shí)會(huì)感謝今天的自己。4. 404. 左葉子之和左葉子的定義比想象中更容易繞暈4.1 “左葉子”的完整定義與兩個(gè)反直覺例子“左葉子之和”聽起來很簡(jiǎn)單把左葉子節(jié)點(diǎn)上的值加起來。但什么是左葉子必須先給它一個(gè)嚴(yán)謹(jǐn)定義這個(gè)節(jié)點(diǎn)是某個(gè)節(jié)點(diǎn)的左孩子這個(gè)節(jié)點(diǎn)自己沒有左右孩子。有兩點(diǎn)反直覺的地方要注意。第一一個(gè)節(jié)點(diǎn)即使是右子樹的節(jié)點(diǎn)只要它是父節(jié)點(diǎn)的左孩子同時(shí)是葉子就算左葉子。第二根節(jié)點(diǎn)哪怕沒有左右孩子也不算左葉子因?yàn)樗鼪]有父節(jié)點(diǎn)沒有“左孩子”這個(gè)身份。舉個(gè)容易想歪的例子7 / \ 5 6 / 8這里 8 是 6 的左孩子同時(shí) 8 自己也是葉子所以 8 是左葉子它的值應(yīng)該被計(jì)入。很多人看到“左葉子”三個(gè)字下意識(shí)以為只有整棵樹的左半邊才算這就錯(cuò)了?!白蟆边@個(gè)屬性只和父節(jié)點(diǎn)相關(guān)和它在整棵樹里的位置無關(guān)。再來一個(gè)更刁鉆的1 / \ 2 3 / \ 4 54 是 2 的左孩子、是葉子計(jì)入5 是 2 的右孩子即使它是葉子也不計(jì)數(shù)。所以這一棵樹的左葉子之和是 4。4.2 遞歸寫法用父節(jié)點(diǎn)視角去判定孩子既然左葉子的判定依賴于“父節(jié)點(diǎn)”遞歸遍歷時(shí)就別指望在訪問到某個(gè)節(jié)點(diǎn)的時(shí)候只靠它自己判斷而應(yīng)該在訪問父節(jié)點(diǎn)時(shí)檢查它的左孩子。class Solution { public int sumOfLeftLeaves(TreeNode root) { if (root null) { return 0; } int sum 0; // 當(dāng)前節(jié)點(diǎn)的左孩子是葉子如果是直接累加 if (root.left ! null root.left.left null root.left.right null) { sum root.left.val; } // 左子樹里可能還有左葉子繼續(xù)遞歸 sum sumOfLeftLeaves(root.left); // 右子樹里也可能有左葉子比如4.1里的8不能漏掉 sum sumOfLeftLeaves(root.right); return sum; } }注意最后兩行左子樹要遞歸右子樹也要遞歸。哪怕右孩子本身是葉子如果它下面是空的遞歸進(jìn)去返回 0但如果右子樹內(nèi)部存在“父節(jié)點(diǎn)的左孩子是葉子”的情況這部分值必須被統(tǒng)計(jì)到。漏遞歸右子樹是這道題最常見的邏輯錯(cuò)誤。還有一種更極簡(jiǎn)的寫法把所有判斷都濃縮進(jìn)一個(gè)遞歸返回public int sumOfLeftLeaves(TreeNode root) { if (root null) { return 0; } if (root.left ! null root.left.left null root.left.right null) { return root.left.val sumOfLeftLeaves(root.right); } return sumOfLeftLeaves(root.left) sumOfLeftLeaves(root.right); }這個(gè)版本把“左孩子是左葉子”和“遞歸找其他左葉子”合并成一行代碼更短但可讀性略差。我還是推薦第一種寫法因?yàn)槊嬖嚂r(shí)你需要邊寫邊講邏輯拆開更利于溝通。4.3 迭代寫法棧里彈出的每個(gè)節(jié)點(diǎn)都可以做一次檢查遞歸本質(zhì)上是系統(tǒng)幫你維護(hù)了一個(gè)調(diào)用棧迭代寫法無非是把它變成顯式棧。用前序、中序、后序哪種都行因?yàn)檫@道題只需要把所有節(jié)點(diǎn)拜訪一遍順序不影響累加結(jié)果。public int sumOfLeftLeaves(TreeNode root) { if (root null) { return 0; } DequeTreeNode stack new ArrayDeque(); stack.push(root); int sum 0; while (!stack.isEmpty()) { TreeNode node stack.pop(); // 每次彈出一個(gè)節(jié)點(diǎn)先檢查它的左孩子 if (node.left ! null node.left.left null node.left.right null) { sum node.left.val; } if (node.left ! null) { stack.push(node.left); } if (node.right ! null) { stack.push(node.right); } } return sum; }這里有個(gè)小優(yōu)化點(diǎn)左葉子節(jié)點(diǎn)本身不需要再壓入棧因?yàn)榕袛嗨遣皇亲笕~子在父節(jié)點(diǎn)出棧時(shí)就已經(jīng)完成了。真正需要繼續(xù)壓棧的是那些“可能含有更多左葉子”的子樹。所以你可以像我上面這樣先不管三七二十一左右孩子都?jí)簵:?jiǎn)單清晰也可以對(duì)左葉子節(jié)點(diǎn)額外做剪枝不把它壓棧減少一次無意義的彈出。兩者都正確寫你順手的。4.4 邊界情況對(duì)照表場(chǎng)景期望結(jié)果背后的原因空樹0沒有節(jié)點(diǎn)可加只有一個(gè)根節(jié)點(diǎn)0根節(jié)點(diǎn)沒有父節(jié)點(diǎn)不是任何人的左孩子根節(jié)點(diǎn)只有右孩子右孩子是葉子0右葉子不計(jì)數(shù)根節(jié)點(diǎn)的左孩子是葉子加左孩子值左孩子同時(shí)滿足“是父親的左孩子”和“是葉子”右子樹里存在父節(jié)點(diǎn)的左葉子需要計(jì)入“左”只取決于父節(jié)點(diǎn)的左側(cè)關(guān)系寫代碼前先把這個(gè)表在心里過一遍基本可以寫一次就 AC。5. 222. 完全二叉樹的節(jié)點(diǎn)個(gè)數(shù)從O(n)到O(log^2 n)的特性紅利5.1 最樸素的解法任何二叉樹都能數(shù)先別管“完全二叉樹”這幾個(gè)字把題目當(dāng)成“給我任意一顆二叉樹統(tǒng)計(jì)節(jié)點(diǎn)數(shù)”。這幾乎是遞歸最入門級(jí)的題目public int countNodes(TreeNode root) { if (root null) { return 0; } return 1 countNodes(root.left) countNodes(root.right); }這行邏輯不需要?jiǎng)幽X子當(dāng)前節(jié)點(diǎn)算一個(gè)加上左子樹的節(jié)點(diǎn)數(shù)再加上右子樹的節(jié)點(diǎn)數(shù)。用層序遍歷BFS也能做維護(hù)一個(gè)隊(duì)列每彈出一個(gè)節(jié)點(diǎn)計(jì)數(shù)加 1然后把左右孩子入隊(duì)。兩種解法都是 O(n) 的時(shí)間復(fù)雜度。面試時(shí)先回答這個(gè)版本是穩(wěn)妥的它證明你有基礎(chǔ)能力。但面試官如果追問“這棵樹除了是二叉樹還是完全二叉樹你能利用這個(gè)條件嗎”就到了今天題單的關(guān)鍵部分。5.2 滿二叉樹公式帶來的優(yōu)化思路完全二叉樹有一個(gè)很強(qiáng)的性質(zhì)除了最后一層其他層都是滿的而且最后一層的節(jié)點(diǎn)都盡可能靠左排列。這意味著對(duì)完全二叉樹里的任何一個(gè)子樹它有可能是滿二叉樹也有可能不是。怎么快速判斷某棵子樹是不是滿二叉樹看兩個(gè)深度從它的左孩子出發(fā)一路朝左下走能走幾步從它的右孩子出發(fā)一路朝右下走能走幾步。如果兩邊步數(shù)相等說明左子樹和右子樹的最外邊界高度一樣——它是一棵滿二叉樹。滿二叉樹的節(jié)點(diǎn)數(shù)有現(xiàn)成公式2^h - 1其中 h 是層數(shù)。一步不用遞歸直接套公式。如果兩邊步數(shù)不相等說明這棵子樹沒滿那就只能用老辦法節(jié)點(diǎn)數(shù) 1 左子樹節(jié)點(diǎn)數(shù) 右子樹節(jié)點(diǎn)數(shù)遞歸往下分解。由于完全二叉樹的特殊結(jié)構(gòu)遞歸每一層都會(huì)砍掉一半“不確定區(qū)域”總體效率遠(yuǎn)高于 O(n)。5.3 遞歸實(shí)現(xiàn)與容易寫錯(cuò)的一行位運(yùn)算優(yōu)化版代碼如下public int countNodes(TreeNode root) { if (root null) { return 0; } int leftDepth 0; int rightDepth 0; TreeNode left root.left; TreeNode right root.right; while (left ! null) { leftDepth; left left.left; } while (right ! null) { rightDepth; right right.right; } // 如果左外邊界和右外邊界深度相等說明這棵子樹是滿二叉樹 if (leftDepth rightDepth) { // 滿二叉樹節(jié)點(diǎn)數(shù) 2^(leftDepth1) - 1 return (2 leftDepth) - 1; } // 不是滿二叉樹遞歸去左右子樹里繼續(xù)判斷 return 1 countNodes(root.left) countNodes(root.right); }這行位運(yùn)算是整個(gè)代碼里最容易被寫錯(cuò)的一行。我見過很多人寫成(1 leftDepth) - 1算出來的結(jié)果總是少節(jié)點(diǎn)。原因在于我的leftDepth是“沿最左側(cè)走的時(shí)候經(jīng)過的邊的數(shù)量”不是“層數(shù)”。比如只有根節(jié)點(diǎn)的樹走 0 條邊leftDepth 0但滿二叉樹節(jié)點(diǎn)數(shù)是 1也就是2^(01) - 1 1。用位運(yùn)算表達(dá)就是(2 0) - 1 1。如果寫成(1 0) - 1 0根節(jié)點(diǎn)都被你數(shù)丟了。如果你對(duì)位運(yùn)算不熟用Math.pow(2, leftDepth 1) - 1效果完全一樣只是稍慢。我不建議為了炫技而用位運(yùn)算前提是你真明白2 x的含義。5.4 復(fù)雜度對(duì)比與二分思路的一句話說明普通遞歸復(fù)雜度 O(n)優(yōu)化版復(fù)雜度 O(log^2 n)。怎么估算的每調(diào)用一次遞歸就會(huì)在兩個(gè) while 循環(huán)里沿邊界往下走這一步是 O(log n)而遞歸的深度最多也是 O(log n)——因?yàn)橥耆鏄涞臉涓呤菍?duì)數(shù)級(jí)的。兩個(gè) O(log n) 相乘就是 O(log^2 n)。舉一個(gè)直觀的數(shù)字假設(shè)樹里有 10 億個(gè)節(jié)點(diǎn)普通遞歸要真的訪問 10 億個(gè)節(jié)點(diǎn)優(yōu)化版大約只需要幾千次操作。這個(gè)差距在極端測(cè)試數(shù)據(jù)下是肉眼可見的。力扣官方還有一種更進(jìn)階的解法先確定樹的高度再二分最后一層的節(jié)點(diǎn)數(shù)量用位掩碼驗(yàn)證某個(gè)編號(hào)對(duì)應(yīng)的節(jié)點(diǎn)是否存在。思路很漂亮但訓(xùn)練營(yíng)階段能把“滿二叉樹直接套公式”這個(gè)優(yōu)化想明白已經(jīng)超過了大多數(shù)刷題者。我這里不展開先把基礎(chǔ)優(yōu)化吃透。6. 四道題刷完我總結(jié)的二叉樹遞歸檢查清單6.1 遞歸三部曲在這四道題上的映射如果要把今天四道題濃縮成一張思維地圖那它們就是在反復(fù)回答三個(gè)問題。第一這個(gè)函數(shù)該返回什么。110 返回子樹高度并用 -1 表達(dá)“不平衡”257 不需要返回具體值只需要把路徑寫進(jìn)結(jié)果集404 返回左葉子之和222 返回節(jié)點(diǎn)個(gè)數(shù)。返回值定了遞歸的骨架就定了。第二什么時(shí)候停下來。樹的遞歸幾乎無一例外第一反應(yīng)永遠(yuǎn)是“空節(jié)點(diǎn)怎么處理”。110 里空節(jié)點(diǎn)返回 0257 里空節(jié)點(diǎn)直接 return404 里空節(jié)點(diǎn)返回 0222 里空節(jié)點(diǎn)返回 0。然后再考慮真正的“終結(jié)條件”比如 257 的葉子節(jié)點(diǎn)要把路徑收集進(jìn)結(jié)果集。第三單層邏輯做什么。這個(gè)最靈活110 在單層比較高度差257 在單層拼接路徑404 在單層判斷左孩子是否為葉子222 在單層判斷是否為滿二叉樹。單層邏輯寫對(duì)了遞歸基本成功了一大半。6.2 一張表記住四道題的易錯(cuò)點(diǎn)題目核心遍歷方式返回值/狀態(tài)最高頻易錯(cuò)點(diǎn)110 平衡二叉樹后序遍歷int 高度-1 表示失衡混淆高度深度忘了剪枝257 二叉樹的所有路徑前序遍歷無返回值收集結(jié)果StringBuilder 忘記回溯多出“-”404 左葉子之和任意遍歷整型累加和漏遞歸右子樹根節(jié)點(diǎn)誤判為左葉子222 完全二叉樹節(jié)點(diǎn)個(gè)數(shù)后序 特性判斷int 節(jié)點(diǎn)數(shù)滿二叉樹公式里的 1 寫錯(cuò)位運(yùn)算搞混這張表我建議抄在解題筆記里刷題中期拿出來復(fù)習(xí)一遍比再刷十道新題更有用。尤其是 257 的“回溯”和 222 的“滿二叉樹公式”是訓(xùn)練營(yíng)同學(xué)互相提問時(shí)最容易翻車的地方。6.3 最后一件事把“為什么”講清楚第十五天刷完我最大的體會(huì)是二叉樹的遞歸題從來不靠背題而是靠把“遍歷順序、返回值、邊界條件”這三個(gè)問題想清楚。四道題看起來各自獨(dú)立其實(shí)是同一套思維在四個(gè)場(chǎng)景下的反復(fù)演練。所以如果今天你也剛好刷到這里別急著去做下一批題目。先把每道題的代碼遮住口頭給自己講一遍“110 為什么用后序257 為什么用前序404 為什么可以隨便用任何順序222 的滿二叉樹公式為什么是 2 的 h 次方減 1”這幾個(gè)問題能流利答出來今天的四道題才算真正消化了。后面遇到的二叉樹遞歸題大概率都是這些套路的變形而已。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人人看人人爰人人操| 国产人妻天天干精品| 欧美少妇熟女| 成人亚欧免费视频| 乱伦图av| 亚洲第一精品在线视频| 欧美桃色网| 99色| 翔田千里Av在线| 日夜尻逼网| 久久草草欧美精品| 曰韩av中文字幕专区| 97欧美日韩| 日韩熟女视频二区| 国产高清不卡视频| 中文字幕一区二区韩| 99re视频这里只有精品| 噜噜噜亚洲精品| www99热| 淫荡少妇免费| 婷婷九月丁香| 精品久久在线区一区| 淫荡少妇免费| jizz啪啪| 99re免费| 欧美日韩资源| 伊人国产成人av网站| 无毛精品| 97网址www| 97婷婷色| 国产精品对白内射| 国产精品岛国片在线观看| 97日韩欧美| 亚洲丰满很很操| 丝袜综合| 九热大香蕉| 影音先锋中文字幕日本好一区二区| 啊啊啊想要| 久久久极品| 941超碰| 激情综合av| 东北女人av| 天天综合色| 天天精品| 亚欧性爱在线无码| 色色色色色色色色色色色色色色综合| 黄色av一区二区在线| 国产一级内射无挡观看| A 天堂| 蜜臀久久99精品久久久电影| 欧美综合另类| 91久久久亚洲| 伊人五月天婷婷| 日本在线观看网址| 亚洲无码com| 国产精品人妻一区二区| 日本性爱欧美性爱| 亚洲中文一区二区三区| 国产精品国产拍高清AV| 91色情黑丝搞鸡在线观看一区二区三区三州| 免费在线观看国内色片网站网址| 人人色人人操在线| 9 9精品一区二区三区| www.色操逼| 亚洲欧洲综合视频在线| 日本超碰在线国产一区| 国产黄a三级三级三级av在线看 | 97香焦色区| 开心五月激情网| 国产一级作爱毛片| 女人喷水视频在线观看| 亚洲无套久久嗯嗯| 操b网站亚洲无码| 超碰97首页| 亚洲s色图| 9 9无尺码天堂网| 成人在线永久| 91在线一起| 99热欧美| 日韩在线视频1234| 国产精品久久久久久久久久久久久久久久久久 | 校园春色 男人天堂| 99国产精品久久久久久久成人热| 日日骚av| 波多野结衣被操50分钟免费视频 | 国产视频97| 日韩成人色图| 亚洲91大片| 欧美日韩一二三| 亚洲国产美女久久久久| 人妻熟女av国产网站| 在免费jIzzjIzz在线视频| 99在线免费视频| 91国产大片| 女人18精品一区二区三区| 大香蕉久久| 波多野42部无码喷潮在线观看| 风流老熟女一区二区三区l| 成人短视频在线观看| 91在线欧色| 成人黄页| A一区片| 欧亚免费视频| 日韩99神马视频播放| 亚洲日本天堂| 人人妻碰人人免费| 激激五月| 亚洲激情片| 最新日韩黄片| 91路www| 高颜值美女口爆高潮浪叫| 操人人| 日日爽夜夜爽| 国产亚热在线久久| 国产激情在线| 久久婷婷欧美| 岛国福利在线精品播放| 爽爽淫人网| 99re这里只有精品2| 久久天天艹| 在线观看黄色电话| 无卡一区=区| 精品视频一区二区| 五月丁香婷婷综合| 抽插亚洲无码| 久久黄黄| 中国熟女91| 精品蜜乳AV免费观看| 亚洲图片偷拍视频区| 九九九九九九九九九九九九九九九女| 精品视频在线观看精品| 九久9热| 黑人综合网| 激情专区综合| 亚洲中文sv| 国产在线视频二区| 啊啊啊啊啊啊啊啊啊啊在线观看| 欧美v亚洲v综合v国产v妖精| 玖玖资源中文字幕制服丝袜| 久久亚洲欧美中文字幕国语| 亚洲色图 图片| 久操操AV电影| 久久↗↗| 色婷婷影院| 国产精品视频麻豆入口| 伊人aaa| 久久精品日韩| 2019午夜福利视频| 女人被添高潮免费视频| 久久久夜夜夜| 91在线色| 亚洲一区二区三区AV无码 | m欧洲一级午老| h4610国产人妻| 性色国产东北露脸精品视频| 温婉少妇玩3p| 在线播放成人高清免费视频| 精品免费国产二区三区| 国产精品久久久久久片| 九热超碰| 午夜天天碰综合视频| AV天堂因数| 精品久久視頻在线| 久久久久女教师免费一区 | 亚洲97在线观看| 又黄又爽在线观看视频| a片自拍直播视频| 国产亚洲色婷婷99精品91| 免费在线黄片视频| 青青草一区二区三区四| 黄污污污污| 免费观看成人www精品视频| 国产精品久久久777| 你想操日本小逼吗| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 日韩成人综合网| 天天干天天舔| 五月天婷婷社区| 色女综合| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美日日网| 国产精品免费久久久久久久久久| 激情文学 亚洲图片| 综合色啪| 极品色www影院| 91在线欧美| 麻豆黄四叶草网站| 人妻22p| 亚洲 小说 欧美 激情 另类| 91久久久久久久| 五月激情综合网| 九九精品无码专区免费| 国产日韩怡红院| 亚洲精品一二三四区| 丰满人妻一区二区三区色-百度| 欧美成人综合| 色情亚洲日本成人| 色狠狠综合噜一二三区| 中文字幕亚洲永久精品| 精品人妻一区二区三区蜜桃视频| 婷婷亚洲中文字幕在线| 久久黄色视频一区二区三区| 老司机福利青青草| 夜夜欧美| 天天躁日日躁狠狠狠躁| 午夜九九| 精品9区| 综合影院亚洲| 乱伦AVxx| 欧美日产国产在线成人第一区| 婷婷8月天青娱乐| 是还免费视频1727我| 国产农村妇女精品一二区| 97天堂| 国产AV无码AV| 美女写真| xxx0国产在线播放| 国产美女销魂在线观看不卡| 欧美性爽xyxOOOO| 一二三区视频在线观看| 一本大道久| 欧美91久久久久| 裸体美女久久久| 91美女在线看| 密臀视频一区二区三区| 欧美乱妇狂野欧美在线视频| 九九人妻| 亚洲图片欧美| 国产精品高潮久久久无码| 久操视频在线| 中文字幕乱妇免费视频| 亚洲高清欧美总合| 成人精品无码| 欧美宗合网| 亚洲欧美校园| 玖玖久久久| 99re超碰| 少妇干B| 屁屁影院一区二区三区国产| 欧美色五月| 欧美v亚洲v日韩v最新在线二区| 天天日天天干天天整| 国产精品久久伊人| 加勒比日本在线| 少妇特黄一区二区三区| 综合熟妇一区二区三区| 婷婷五月天激情四射| 国产一国产一级毛片古装| 97在线免费观看视频| 亚洲精品国产无码高清| 丁香六月啪啪| 欧亚日韩三区| 日本布卡一区二三区| 国产精品久久久久久久久久久久久久吹 | 欧美国产日韩清纯唯美| 啊啊啊快操我视频| 色婷婷日韩精品一区二区三区| 91四海无码日韩欧美| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 亚洲操操| 国产女主播视频在线观看| 天堂精品小草| 91痴汉| 日韩精品人妻| 国产精品青草综合久久| 青青草在线成人视频| 狠狠做深爱婷婷久久二区| 成人草草视频| 91在线秘 男同| 国产做?爰片久久毛片?片美国| 亚洲天天艹| yazhousetuoumei| 亚洲宗合网| 夜草网站| 99色悠悠| 日韩性爱小视频| 超碰九色| 欧美色图下一页| 青青青草原| 中文字幕99999| 思思性爱| 色欲蜜臀AV| 欧美性xxxxx狂欢| 国产亚洲色婷婷久久99精品91葵花宝典 | 久啪| 天天摸夜夜摸| 99热综合| 色色婷婷丁香| 乱伦Av网| 操逼逼中文字幕| 国产老太乱伦一区| 国产sv美女内射| 91色堂| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚洲的天堂网| 亚洲天堂第一页| 欧美|91色综合| 2020国产精品| 全球成人中文在线| 亚洲成a人在线观看久| a片久久久久久久久久久久 | 动漫爆乳3D奶水一区在线观看| 人妻丰满熟妇一区二区三| 欧美狠狠干| 青娱乐妇女性生活| 国产精品一区二区麻豆| 中文字幕精品亚洲熟女| 欧美日韩国产色五月综合在线| 色综和网| 人妻素股| 中文字幕一区二区三四五区日日骚| 啊啊啊好湿国产一二| 91大学精品激情戏| 激情丁香五月婷婷| 95精品在线| 超碰超碰95| 欧美美女自慰一区二区三区| 中文字幕视频在线观看一区二区| 久久嫩草国产成人一区| 日产中文字幕2020| 东京热不卡视频| 久久精品视频一区三区小泽玛利亚| 91日产欧美| 超碰1997| 亚洲做性| 99无码| 大肥女高潮bbwbbwhd视频| 夜夜爽夜夜爽| 无码一区二区精品视频久久久春药| 国产成人超碰在线| 久草视频在线视频在线视频在线观看| 国产一级操B视频| av天堂5| 中文字幕日韩综合| 人妻久久久久久久久久久久久久久| 久久久久久国产精品免费网站| 老熟女乱子伦中文字幕一区二区 | 性感美女91影视| 久久久久久久久久久久97| 青青青青青手机视频| 91亚洲电影| 狠日欧美| 久久黄色视频一区二区三区 | 97精品视频在线播放| 东京热91| 亚洲无码太久| 偷窥自拍亚洲天堂网爆| 综合网色| 欧美曰韩国产精品| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久中文字幕女同性恋一区| 大香蕉伊人75| 嗯啊视频免费在线观看| 天天插天天插| 91爰爱欧美| 99999国产| 人妻无一区二区三区| 日韩精品在线观看网站| 亚洲s在线观看| 久久草视频污视频| 国内伊人久久久久久网站视频| 亚洲国产精品99久久久| 婷婷五月在线视频| 超碰日韩美妻| 国内偷拍精品一区二区| 操逼操网| 婷婷久草一区二区三区| 亚洲综合射| 97碰碰色| 在线人人人人人人精品超| 久久天天摸| 9ⅰ久久久天天| 人人做,人人操,人人摸| 亚洲色图超碰在线| 欧美色吧综合| 精品国产一区二区三区香蕉欧美| 中文字幕五区| 98超碰欧美| 思思热国产在线视频| 欧洲中文字幕| 久久久久久九九九九| 91足交| 久久免费精品96| 在线97视频| 97最新在线播放视频| 99re69综合| 91操操操操| 日韩精品99999| 日日骚av| 久久香蕉综合一本到3atv| 欧美午夜色妇色鬼| 日本不卡一区| 久操视频免费在线观看| 超碰成人人人爽人人爽| 四虎 精品 WWW| 日韩本不卡视频在线观看| 污污汅18禁网站在线永久免费观看| 日韩精品高清资源在线| 亚洲牲交| 欧美日韩免费专区在线| 成年人网站在线免费观看| 97五月天| 麻豆天天躁天天揉揉AV| 人妻av在线| 熟女网站最新| 在线日韩精品一区二区三区| 中文字幕55555| 国产熟妇 码视频户外直播| 国产玖玖| 亚洲色图 欧美| 欧美亚洲综合色| 久久东京热成人| 成人片在线播放| 欧美写真视频一区| 超碰 另类 欧美| 亚洲欧美国产中文视频| 国产十八禁视频| 性影在线视频| 超碰这里有精品| 精品亚洲国产成人AV制服丝袜| 五十路人妻在线| 丰满人妻av一区二区三区| 91网站在线播放| 免费一级视频特黄色大片| 有码专区最新中文字幕有码| 婷婷五月花| 日韩熟女三十乱伦| 亚洲国成人情色好看电影| 国产精品盗摄 偷窥盗摄| 国产精品天干天干综合网麻豆| 日韩人妻中文视频| 96超碰网| 国产白嫩精品久久| 精品欧美А∨无码黑人大荫蒂 | 国产av激情无码久久天堂| 大香网伊人久久综合网eew| 天天操夜夜嗨| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产麻豆一级精品视频| 精品999一区二区| 玖玖综合色| 黑人嘿嘿嘿超爽免费视频| 91美女片在线| 国产十八禁视频| 精品久久人妻成人网| 天天伊人| 欧美成人综合| 麻豆这里只有精品| 亚洲一区日韩精品中文字幕| 国产精品久久久久久久免牛肉蒲团| 91三级理论片播放器| 日本天天干天天操一区| 啊啊啊不要好爽日韩无码一区| 伊人色综合网电影| 人人操人人干xxx| 91 亚欧| 男人天堂站| 国产精品自拍欧美在线| 天天综合网网欲色| 果冻传媒A片一二三区| 麻豆亚洲Av成人无码一区精品| 色就色综合| 亚洲毛片基地专区| 日韩av电影网站| 精品一区96| 欧美刺激色黄片免费看| 老子午夜伦不卡影院| 亚洲综合网91| 国产中午字一暮区| 性性欧美| 18一区二区三区| 日本性爱少妇| 国产一区二区成人av在线播放| 五月天AV资源| 是还免费视频1727我| 久久9 9 9精品| 亚洲 欧美 手机在线观看| 草莓精品视频在线免费观看| 操东北女人| 密臀成人视频久久久| 白 大 人妻 区 在线| 亚洲熟妇乱女区二区三区| 国产精品一区二区黄片| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久久久久少妇| 人人手机欧洲亚洲国产人妻| 天天天天操| 手机看av网站在线看| 四虎国产精品永久地址入口| 人人性爱视频免费| 国产捆绑一区| 东京热一区二区中文字幕| 大香蕉狠狠爱| 超碰色图| 超碰人妻久久| 久热热| 我要色综合网站| 98超碰日本| 国产小炒后入式| 亚州久久9| 欧美老妇综合网| 精品国产污一区二区三区| 黄页大片在线观看| 啪啪91| JULIA人妻风俗店中出电影| 亚欧韩av| 六月丁香婷| 97色在线| 超碰久久性爱| 婷婷色香| 香蕉久久精品| 久久综合久色欧美综合狠狠| 成人一级二级| 熟女少妇视频| 亚洲av青草久久一区二区| 男人天堂网址| 在线观看亚洲成人精品| 国产成人精品必看 | 插B在线观看| 亚州,欧美在线| 老熟乱一区二区三区四区| 欧美东京热青青草| 天天综合91| 中文字幕在线免费观看 | 天天色综合天天操| 五月天婷婷小说| 久久久久久人妻| 午夜精品99久久久久传媒| 欧美色图天堂网m| 黑人与人妻| 羞答答AV中文字| 78精品| 亚洲**2021在线观看| 精品成人无码| 抽插无码高清一区| 97资源超碰| www.高清无码诱惑一区.com| 久久久一区二区三区麻豆| 国产成人亚洲精品无| αⅴ天堂| 欧美强奸一区二区诱惑| 国产精品交换一区二区| 亚洲永久永久永久永久一级一级一级精品| 好舒服视频| 日韩精品资源| 欧美亚洲自拍另类人妻| 韩国一级做A片免费的| 91亚·色| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 岛国视频免费在线观看| 嗯嗯啊操我| 极品AV网站在线观看| 伊香蕉综合久久久久久久噜噜噜| 亚洲色图欧美一区二区不卡| 操逼1区| 久久精品亚洲婷婷| 91九九九吃| 久久久久国产精品久久久| 国产成人一级av88| 超碰公开久久网| 精品女同一区| 天天操夜夜操狠很操| 99这里有精品视频| 天天激色| www亚洲免费| 亚洲天堂男人在线| 欧美中字二区| 狠狠操狠狠操操| 午夜黄色免费在线观看| 99只有精品| 蜜臀久久99精品久久久久久-DVD原版全| 久久av一级av少妇av高潮 | AV和黑人在线播放| 日本一区三级韩国| 96国产精品| 日韩色| 97国产色综合| 欧美色97| 在线观看国产黄色| 新视频sss国产| 欧美成熟性爱精品| 久久国产精品一级二级三级| 国产馆| 大香蕉丝袜一级片| 怡红院亚洲怡春院av| 国产乱伦性爱区| 澳门人妻久久| 欧美日韩97| 日韩另类色图| 96国产精品| 欧美亚洲中文字幕| 99久在线精品99re8| 久久av成人无码免费| 日韩情色AV| 亚洲激情综合另类男同| 手机久操欧美综合色码| 日韩熟女乱伦中出| 人人澡人人弄| 久久久久久亚洲中文| 绑缚麻绳人妻寝取完整版| 性爱视频免费网址| 久久超碰免费的| 国产无码精品高清| 嗯嗯啊好大| 岛国视频免费在线观看| 欧美色图97| 狠狠操夜夜| 亚洲啪啪啪啪视香蕉| 中国国国产一级特黄毛片| 97超碰总站| 欧美成人性爱视频大全| 偷拍导航视频网站| 95人妻爽爽人人做人人澡| 99久在线精品99re8蜜桃| 天堂精品在线| 在线观看不卡一区二区三区| 天堂日本亚洲欧美| 亚州免费啪啪视频| 精品一区99999| 色婷婷在线视频| 午夜小电影在线插入淫高潮| 北条麻妃性愛视频| 大香蕉一区二区在线观看.| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 精品视频专区| 1024人妻熟女一区二区三区| 超碰导航97| 超碰在线国产| 中文乱码字字幕在线第5页| 亚洲区限制级| 啪啪91| 日韩 国产 欧美自拍| 亚洲Av噜噜一区二区三区妖精| 日韩Va亚洲va欧美Ⅴa久久| 综合97久久| 天天91~综合入口| 成人av福利在线观看| 少妇久久久免费| 综合网欧美在线| 亚洲精品国产熟女久久久久久| 日日爽熟女| 激情小说五月天| 制度丝袜99| 深喉吞精| 欧美日韩另类字幕中文| 久久久久成人蜜桃精品| 欧美日日操| 18精品一二区| 欧美白嫩在线放| 亚洲久热| 国产精品宅男免费| 亚洲色图欧美色图另类图片| 欧美激情久久久久| 久久亚洲不卡| 国产强奸乱伦xd| 成人国产二区三区在线,男女精品。| 蜜桃精久三区| 激情五月天婷婷| 国产大学生口爆吞精合集| 麻豆天美91| 色偷偷综合91久久噜噜| 日日骚 av| 26uuu国产免费观看| 91亚州| 天堂亚洲精品| 精品久久久不卡一区二区| 欧美九9 9 9| 人人人人插| 欧美爱三级日韩久久| 日韩图色| 少妇色欲综合网2| 天美精品一区二区三区四区在线观看| renqi久久久久久久久久久久| 欧美人与性动交a美精品| 美女裸体无遮挡永久免费观看网站| 精品成人女人久久| 日本日日色视频| 欧美激情亚洲色图| 校园春色制服丝袜中文字亚洲 | 精品午夜福利| 亚洲成人在线乱码色午夜| 天天天天做夜夜夜夜做| 欧美专利1区2区3区4区5区免费| 激情看片网站| 日美免费黄片| 亚洲 国产 精品一区| 国产黄色在线播放观看| 不卡视频一区蜜桃视频| 97色欧洲| julia国产在线 | 国产成人无码久久精品| 亚洲AV无码黄色强奸| 日产操逼| 天天射天天操天天干天天吃2018 | 天天夜夜久久| 熟女中出视频| 插入综合网| 亚洲不卡AV在线| 精精夜夜| 国产自产91区13区| 嗯嗯嗯不要不要免费视频| 麻豆国产尤物AV| 亚洲欧美精品福利在线| 隔壁邻居波多野结衣中文字幕| 成人免费看吃奶视频网站| 岛国片在线播放| 国产AV精久久| 人人透人人操| 五月天色图影视| 69精品在线| 乱码熟妇人妻久久久| 殴美性色a级欧美| 射丝袜高跟鞋99| 超碰97玖玖爱| 久久精品中文字幕女同| 色九色久| 欧美色宗合| 一区二区三区美女超清| 亚洲成人性爱网站在线播放| 被男人添B超爽视频| 日韩在线一区高清在线| 亚洲超碰AV| 依人大香蕉| 国产视频一区二区在线| 蜜臀AV成人精品蜜臀| 四虎免费视频| 色五月av| 26uuu欧美日韩| 加勒比在线视频一区二区三区 | 加勒比av官网在线| 999热日韩精品| 久久久久久综合久久伊人蜜月| 欧美懂色综合网| 精品毛片av一区二区| www欧美性爱| 国产天美欧美| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 2020中文字幕在线| 校园激情狠狠四射| 性色av大全| 十八禁视频网站| 秋霞男人网| 国产尤物在线三区| 人人操人人插 - 百度 - 百度| 日本色色视频网站| 99热这里是精品| 玖玖爱一区在线| 欧美高清色| 99在线无码精品秘 入口黑人| 亚洲综合在线视频| 麻豆国产av网| 秘书高跟黑色丝袜国产91在线| 欧美色图私拍91| 97爱啪| 97超碰人人模人人拍人人| 国产区91柔拿会所技师| 欧州色图区| 天天躁狠狠躁av| 又粗又长又大国产不卡| 日韩去日本高清在| 欧美国产视频| 亚洲欧美校园| 丰满人妻无码一区二区三区| 116美女午夜| 亚州五月| 色狠狠 - 百度| 91N五十路| 亚洲色婷婷综合久久久久中文| 无码人妻精品一区二区中文| 婷婷色色五月| 色欧美色交综合| 黄色AAAAAAAAAAA大片| 超碰爽人妻熟女Av| 蜜臀网 一区| 女人被添高潮免费视频| 成人在线午夜视频一区| 乱性AV| 精品精品精品| 中文字幕国产| 国产熟女免费观看久久| 躁躁日曰躁2020| 超碰在线免费一区二区三区| 久久精品亚洲成a人天堂| 搞中出视频在线观看| 日韩欧美大片免费高清啪啪| 96AV精品| 亚洲熟女av中文字幕| 日韩成人大片一区二区| 大香蕉青青9| 国产农村妇女精品| 成人在线视频网| 中文精品少妇天堂| 欧美日韩中文亚洲v在线综合| 天天摸夜夜操视频| 激情五月天插| 男人的天堂在线| 搡老女人老妇女AAA一VU麻豆 | 人妻久久一区二区三区 | 一区二区亚州激情久婷婷欧美| 白丝AV| 国产成人+综合亚洲+天堂| 国产乱子伦一区二区三区免看| www熟女乱伦com| 欧插网站| 欧美AAAA黄片| 成人熟女视频一区二区三区| 精品国产Av无码久久久伦古装| 志村玲子视频一区二区| 四虎免费在线观看| 国产久久一区二区| 嫩草美女久久| 久久黄色网址| 亚洲 无码 偷拍| 中文字幕av久久爽Av| 日韩欧美午夜一区二区| 青娱乐手机日韩在线视频| 日韩人妻一二三区视频| 青青草玖玖爱| 91九色精品熟女内射| 欧美97se| 台湾佬激情综合| 探花视频免费观看国产专区| 伊人大香蕉在线| 老子午夜伦不卡影院| 超碰天天操| 亚洲欧洲网站免费观看| 麻豆 美女 丝袜 人妻 中文| 久久9精品视频| yiqicaoav| 60秒免费小视频| 粉嫩av在线一区二区| 精品人妻高清麻豆av| 一区二区偷拍拍视频| 国产精品人妻免费精品| 国产五码丝袜屁眼| 国产高清无码一区三区二区| 亚洲中亚日激情视频| 人人摸人人干| 影音先锋新男人| 尤物视频新赏网鲜网色诱网| 亚洲 图片 综合91| 性色生活片久久毛片婬片免费放女人一级毛片| 刺激精品视频| 久9视频| 国语av狠狠色丁香婷婷综合激情| 在线视频五十市| 91小视频| 国产精品96久久久久久| 中文字幕久久精视频久久大全| 91高清无码下载| 91精品国产一区三一| 九九九久久久久| 婷婷色导航| 国产亚洲深夜激情| 91高清日| 蜜臀人妻少妇久久在线观看| 图片区小说区| 国产一级舔足在线观看| 俞拍自拍| 宅男午夜在线视频| 久草福利在线资源站| 国产精品午夜AV完会免费| 国产久久久久影院老熟女| 天天操夜夜操| 国产精品久久久久久久黄无码| 国产精品国产精品国产| 老司机午夜福利视频一区二区| 日韩啪啪啪啪啪| 欧洲一级性爱视频在线观看| 国产自偷| 超碰综合色| 亚州色图第三区| ji熟女.com| 亚洲精品久久久久久| 国产乱弄免费在线视频。| 五月天综合网| 污污汅18禁网站在线永久免费观看 | 97视频在线播放| 亚洲精品人伦一区二区| 日本91白丝| 色婷婷网| 尤物一级在线免费观看| 99久久精品欧美国产| 91人妻熟女| 黄色av播放免不| 男人把坤坤插入女人的下体| 91人妻视频在线| 色色热| 六十路日本| www.黄色在线| 欧美区亚洲区偷拍区| 97在线视频免费| 欧美精品黑人猛交高潮| 青青草白白色| 少妇人妻精品| 99re这里只有精品3| 插入综合网| 女优视频第10页| www.夜夜操| 欧美精品999| 综合欧美日本三级| 日韩亚洲Av人人夜夜澡人人爽| 午夜一区二区三区国产| 国产成年女人免费视频播放a| 26UUU欧美日本| 日韩 国产 欧美自拍| 欧美天天综合在线| 酒色综合网| 9丨久久九九九| 9丨久久九九九| 黄页av| 久久久一区二区三区四区五区| 91大香蕉伊人| 亚洲综合色图欧美| 久久婷婷苹果| 91情色在线| 香蕉99秘 一区精品蜜桃臀| 啊啊啊啊免费视频| 天天干嫩逼网| 翔田千里AV无码秘 三区| 亚洲伊人成综合成人网| 欧美性爱精品七区| 国产一级特黄大片处女| 欧美十八禁导航成人| 香蕉热人人精品| 亚洲αv一区二区三区| 国产九九九九九九九九| 日本韩欧美在线播放a| 激情五月丁香五月| 亚洲性综合9| 亚洲色图20p| 久久久久网站-538在线视频-欧美永久乱码 | 性色国产东北露脸精品视频| 狠狠图片青青草| 亚洲国内精品成人不卡| 男女香蕉一区二区| 久久久久白虎| 思思热在线视频在线| 在线无码视频| av资源在线播放天堂| 青青草视频这里只有精品| 国产一区二区三区不卡手机在线| 亚洲男人的天堂在线看| 日本久久久久久久久久| 呦呦一区| 操逼不卡中文字幕| 中文字幕一区日韩精| 97干日韩| 秋霞午夜视频一区二区| 俺也射| 超碰吊日色| 亚洲国产成人精品久久久国产成人一区二区| 久久精品福利影院| 精品亚洲国产成人AV制服丝袜| 嗯嗯啊中文字幕| 久草精品热视| 美日韩一二三区| 麻豆视频一区二区| 啪啪免费| www.色五月| 精品99999久久久久久| 一本久久精品中文字| 91老妇女| 強姦亂倫a| 毛片电影一区二区三区| 亚洲人在线| 久久久久久久久久久精| 襙一襙| 六十路日本| 97这里都是精品| 97色操| 一区操逼| 熟妇在线视频一区二区| 日韩精品电影| 亚洲色图图片| 国产欧美日韩精品中文| 欧中日成人免费影视| 亚洲。天堂。日本在线观看| 97超碰超碰| 亚洲欧洲网站免费观看| 欧美情色男人的天堂| 精品久9| 日韩综合无码色欲vv| 开心五月婷婷| 亚洲s色图| 无码137片内射在线影院| 色噜噜狠狠色综合日日| 亚洲自拍欧美色综合| 91视频精品| 六月丁香五月婷婷| 春色综合免费| 精品无码欧美三级| 九月丁香婷婷| 欧亚韩国999| 国产探花精品在线| 久久久久久91香蕉国产| 亚洲中文sv| 国产无码一二三区| 国产精品视频在线播放 | 福利操逼| 色哟哟-国产专区| 久久精品女同亚洲女同13| 6080YYY午夜理论片在线观看| 欧美极品女人的天堂| 欧美激情 亚洲色图| 欧洲成人性爱视频| 亚洲男人天堂2016| 久久精品国产AV一区二区三区| 黄总AV色图| 制度丝袜99| 久久妇| 国产91久久九九免费精品无码| 欧洲特黄毛片免费看欧洲毛片| 婷婷午夜成人色中色| 国产极品999| 日日摸日日碰夜夜爽视频| 亚洲美女自拍偷拍视频| 啊啊啊啊二区好大| 亚洲av性爱电影| 婷婷激情四射| av橘色网站| 欧美熟女操屄| 天天影视网综合少妇| 啊嗯嗯啊好大好爽| 欧美性爱精品七区| 五月天婷婷久久| 97网址97| 飘花国产午夜精品不卡| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 99这里都是精品| 亚洲国产av中文字幕久久| 午夜免费视频1000| 国内精品久9| 国产精品久久久久久无码红治院| 97人肏| AV色五月| 日本1区2区不卡视频| 999在线电影香蕉| 日韩青久久| 日本操逼二区| 久操操| 精品欧美不卡在线播放| 99爱在线视频| 日韩无码服务区| 少妇高潮特黄A片| 欧美后入视频| 成年人网站在线免费观看| 午夜精品久久久久久久男人的天堂 | 性爱乱伦网址| 欧美一二三区四五区| 老熟女网站| 青青草日韩无码| 99少妇内射| 一区二区三区探花在线观看| 色色99| 亚洲欧美精品国产一区二区| 色婷婷基地| 伊人网在线点播| 啪啪资源网| 91在线视频免费中出| 97 色综合| 99国产精品人妻人伦| 日本不卡二区| 天美国产精品| 亚洲无码电影久久久| 天天亚洲综合| 另类小说综合网| 综合情欲网| 亚洲少妇色| 老子午夜伦不卡影院| 97网址97| 天天插天天射| 无码不卡亚洲成?人片| 久久中出在线| 三级三级三级a级全黄三| 久操电影网| 九久9热| 大香网站| 亚州综| 免费人人搞97| 亚洲蜜桃V妇女| 超碰色综合| 欧美韩日精品资源| 五月丁香综合| 亚洲色系另类精品国产| 亚洲色图日韩丝袜制服一区二区五月在线| 91大学精品激情戏| 在线播放一级无码视频| 亚洲成人在线乱码色午夜| 日韩99999色| 国产超碰人人爽人人做| 蜜臀久久99精品久久久电影| 欧美日韩亚洲五月天婷婷| 大香蕉伊人久久| 五十路六十路七十路熟婆| 蜜桃网熟妇| 欧美中文字幕一区 | 18禁无码永久免费无限制| 亚洲欧美天| 亚洲激情 欧美色图| 麻豆这里只有精品| 国产一区二区在线播放量| 欧美性高潮在线| 美女诱惑在线一区| 亚洲情色电影网| 国人欧美精品一区二区| 亚洲人成网站7777| 色约约一区=区三区| 九九九九九九视频| 久久不卡一区二区| 日本久久网| 美女操逼福利视频| 中文字幕第9页萱萱影音先锋| 日本2020一区二区| 欧美色日| 97人人爱人人做人人乐| 久久久com| 无码精品人妻一区二区三区妖精 | 高清不卡国产| 色99视频| 黄色高清无码无码破解免费暗网| 国产二区三区免费视频| 色九久| 婷婷探花久久精品一区| 91丝袜激情在线| 99.色网| 91爱综合| 婷婷五月天成人网| 亚洲欧美一区二区三区一猛片| 在线观看亚洲成人精品| 国产久久久久久| 男女啊啊啊啊啊| 天天综合~91| 亚洲久草AV色图| 亚洲国产青青| 日日日骚女人精品| 97精品97| 熟女欧美日韩综合婷婷| 性生活性生大爱77AV国产 | 男人的天堂一区三区| 久思思热视频在线观看| 福利视频香蕉免费一区二区在线| 91精品丝袜久久久久久| 亚洲做性| 日韩AV噜噜噜一区二区三区四区| 色香伊人| 欧美 亚洲 综合 制服 另类| 久久精品老司| 91网站18在线| 亚洲色悠悠久久88| 亚洲人久久久网| 久久原创中文| 俺也射| 色婷婷日韩精品一区二区三区| 青青草久草AV| 嗯嗯啊啊啊啊轻点视频| AV色五月天| 好湿好紧视频| 日日摸天天爽夜夜欢| 男人的天堂 在线一区|