尋找錯誤結點練習

2021-07-27 15:59:29 字數 691 閱讀 3839

一棵二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜尋二叉樹,請找到這兩個錯誤節點並返回他們的值。保證二叉樹中結點的值各不相同。

給定一棵樹的根結點,請返回兩個調換了位置的值,其中小的值在前。

只有兩種情況,調換的兩個數相鄰,調換的兩個數不相鄰

如果兩個數相鄰,只有一次順序反過來,要是不相鄰有兩次順序反過來。最多兩次,使用非遞迴方式的中序遍歷即可。

/*

struct treenode

};*/

class finderrornode ;

treenode* cur=root;

stack

sta;

int min=int_min;

vector

res;

vector

retu;

while(!sta.empty()||cur)

treenode* temp=sta.top();

if(temp->valval);

}min=temp->val;

sta.pop();

cur=temp->right;

}if(res.size()==2)

else

return retu;

}};

尋找單鏈表的中間結點

如何尋找單鏈表的中間結點?這裡介紹兩種方法。該方法的思路為 1 先求解單鏈表的長度 length 2 然後遍歷 length 2 的距離即可查詢到單鏈表的中間結點。具體實現 public node findmidele node head return tmp 該方法的缺點 需要遍歷兩次鍊錶,即第一...

尋找錯誤標註資料策略

使用訓練好的模型,得到 結果和標註結果比對,不一樣的可能為noise 的資料 缺點 需要有訓好的模型,模型不能過擬合 度量 所有訓練epoch 的標註位置的值與其他位置的最大值的差值的平均。標註位置的值與其他位置的最大值的差值的平均 越大說明標註越正確,越小或者為負數說明不正確。所以通過選擇乙個閾值...

快速尋找單鏈表中間元素結點

忘記什麼時候做的筆試題了。記憶力差沒辦法。一看到這倒題目,下意識的想到的解決方案便是首先迴圈遍歷鍊錶獲得鍊錶長度len,然後再次迴圈遍歷鍊錶查詢len 2處的中間節點。在這種情況下,其時間複雜度由兩次迴圈決定 o l l 2 o 3l 2 儘管這種思路也能解決問題,但也許存在更好的方法。上次我們談到...