調整搜尋二叉樹中的兩個錯誤的節點

2022-09-23 10:21:10 字數 844 閱讀 5375

題目:找到搜尋二叉樹中兩個錯誤的節點

《程式設計師**面試指南》第40題 p137 難度:尉

★★☆☆

(只看原問題,高階問題難度將,解答不可能看的懂

)如果沒有錯誤節點,那麼搜尋二叉樹的中序遍歷的節點值是一直公升序的。如果有兩個節點位置錯了,就一定會出現降序

出現降序有2種情況

出現2次降序,第乙個錯誤的節點為第一次降序時較大的節點,第二個錯誤的節點為第二次降序時較小的節點

出現1次降序,第乙個錯誤的節點為這次降序時較大的節點,第二個錯誤的節點為這次降序時較小的節點

總結為:第乙個錯誤的節點第一次降序時較大的節點第二個錯誤的節點最後一次降序時較小的節點

因此只需要改寫乙個基本的中序遍歷即可。書上**使用了非遞迴(棧)來進行中序遍歷,**如下:

public node gettwoerrnodes(node head) 

stackstack = new stack();

node pre = null;

while (!stack.isempty() || head != null) else

pre = head;

head = head.right;}}

return errs;

}

二叉樹問題 尋找搜尋二叉樹中兩個錯誤的節點

題目 一棵二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜尋二叉樹,請找出這兩個錯誤的節點並返回。已知二叉樹中所有節點的值都不一樣,給定二叉樹的頭節點,返回乙個長度為2的二叉樹節點型別的陣列errs。def gettwoerrornode root errs none f...

尋找搜尋二叉樹中兩個錯誤的節點

題目 一顆二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這顆二叉樹不再是搜尋二叉樹,請找到兩個錯誤節點並返回。已知二叉樹中所有節點的值都不一樣,給定二叉樹的頭節點head,返回乙個長度為2的二叉樹節點型別的陣列errs,errs 0 表示乙個錯誤節點,errs 1 表示另乙個錯誤節點。思...

找到搜尋二叉樹中兩個錯誤的節點

找到搜尋二叉樹中兩個錯誤的節點 一棵二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜尋二叉樹,請按公升序輸出這兩個錯誤節點的值。每個節點的值各不相同 輸入描述 第一行輸入兩個整數 n 和 root,n 表示二叉樹的總節點個數,root 表示二叉樹的根節點。以下 n 行每行...