簡體   English   中英

證明節點X的后繼Y,當X沒有右子時,是X的最低祖先

[英]Prove that the successor Y of node X, when X doesn't have right child, is the lowest ancestor of X

我在大學學習CS,我有一個問題,我有問題證明。

證明BST上節點X的后繼Y ,當X沒有右子時,是X的最低祖先,即左子也是X的祖先。

我需要考慮所有案例,包括葉子,除了最右邊因為他沒有繼承人。

你們能給我一些從哪里開始的提示嗎?

BST節點的inorder遍歷訪問左子樹,節點本身,然后訪問右子樹。

因此,如果X (沒有正確的子項)是其父項的左子項,那么我們知道它的后繼是父項。 這是從順序遍歷的定義得出的。

如果X是其父級的正確子級,那么父級在遍歷中位於它之前(盡管它不是直接的前任,除非X沒有左子樹)。 這也是從順序遍歷的定義得出的。 X的后繼者,因為它沒有正確的子樹,所以必須在樹的上面。 繼承者不能是父母,所以如果X不存在,那么父母的繼承者必須是父母的繼承者。

在數組 x,y 中找到兩個數字,其中 x <y, x repeats at least n 3 times and y 4 times< div><div id="text_translate"><p> 我一直在努力解決線性時間的數組問題,問題是:假設我們有一個數組 A [1...n] 編寫一個返回 true 的算法,如果:數組 x,y 中有兩個數字有以下內容:</p><ol><li> x < y</li><li> x 重復 n/3 次以上</li><li> y 重復 n/4 次以上</li></ol><p>我嘗試編寫以下 java 程序來執行此操作,假設我們有一個排序數組,但我認為這不是最好的實現。</p><pre> public static boolean solutionManma(){ int [] arr = {2,2,2,3,3,3}; int n = arr.length; int xCount = 1; int yCount = 1; int maxXcount= xCount,maxYCount = yCount; int currX = arr[0]; int currY = arr[n-1]; for(int i = 1; i < n-2;i++){ int right = arr[n-2-i+1]; int left = arr[i]; if(currX == left){ xCount++; } else{ maxXcount = Math.max(xCount,maxXcount); xCount = 1; currX = left; } if(currY == right){ yCount++; } else { maxYCount = Math.max(yCount,maxYCount); yCount = 1; currY = right; } } return (maxXcount > n/3 && maxYCount > n/4); }</pre><p> 如果有人對這類問題有算法想法(最好是 O(n)),我將不勝感激,因為我被這個問題困住了。</p></div></y,>

[英]Find two numbers in array x,y where x<y, x repeats at least n/3 times and y at least n/4 times

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 紅黑樹旋轉:當我有 y = x.right; x.right = y.left。 將 y.left.p = x 寫成 x.right.p = x 是否相同 給定序列 S 和 T,找到一個序列 X 和 Y 使得 S 和 T 屬於 X 和 Y 的 shuffle。(X 和 Y 可能不存在) 對t測試complete.cases(x,y)中的錯誤:並非所有參數的長度都相同 在數組 x,y 中找到兩個數字,其中 x <y, x repeats at least n 3 times and y 4 times< div><div id="text_translate"><p> 我一直在努力解決線性時間的數組問題,問題是:假設我們有一個數組 A [1...n] 編寫一個返回 true 的算法,如果:數組 x,y 中有兩個數字有以下內容:</p><ol><li> x < y</li><li> x 重復 n/3 次以上</li><li> y 重復 n/4 次以上</li></ol><p>我嘗試編寫以下 java 程序來執行此操作,假設我們有一個排序數組,但我認為這不是最好的實現。</p><pre> public static boolean solutionManma(){ int [] arr = {2,2,2,3,3,3}; int n = arr.length; int xCount = 1; int yCount = 1; int maxXcount= xCount,maxYCount = yCount; int currX = arr[0]; int currY = arr[n-1]; for(int i = 1; i < n-2;i++){ int right = arr[n-2-i+1]; int left = arr[i]; if(currX == left){ xCount++; } else{ maxXcount = Math.max(xCount,maxXcount); xCount = 1; currX = left; } if(currY == right){ yCount++; } else { maxYCount = Math.max(yCount,maxYCount); yCount = 1; currY = right; } } return (maxXcount > n/3 && maxYCount > n/4); }</pre><p> 如果有人對這類問題有算法想法(最好是 O(n)),我將不勝感激,因為我被這個問題困住了。</p></div></y,> 從hist()圖中檢索x / y值 最小化矩陣中 x 和 y 之間的曼哈頓距離 “返回 x 和 y”是什么意思? 在具有[x,y]點的數組中找到一個矩形 坐標x,y的數據結構,允許在x和y上進行O(log n)搜索 如何證明從最小節點在BST中找到后續n-1次是O(n)?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM