501 二叉搜尋樹中的眾數

2021-10-09 17:55:12 字數 1089 閱讀 8581

給定乙個有相同值的二叉搜尋樹(bst),找出 bst 中的所有眾數(出現頻率最高的元素)。

關鍵思路,怎麼在乙個有序陣列中找出眾數,可以使用三個變數,base記錄當前的數字,count記錄當前數字出現次數,maxcount記錄已遍歷陣列數字出現的最大次數。

有了這個思路後,可以直接中序遍歷樹就好了。

morris中序遍歷

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else

if(count == maxcount)

else

if(count > maxcount);}

} vector<

int>

findmode

(treenode* root)

else

if(predecessor -

> right ==

nullptr

)else}}

return answer;}}

;

常規中序遍歷

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else

if(count == maxcount)

else

if(count > maxcount);}

} vector<

int>

findmode

(treenode* root)

void

dfs(treenode* root)

dfs(root -

> left)

;update

(root -

> val)

;dfs

(root -

> right);}

};

501 二叉搜尋樹中的眾數

首先這題可以遍歷一遍二叉樹,用乙個map來存每個數字出現的次數之後取最大的就行,但這樣沒有利用到二叉搜尋樹的條件。所以我們利用二叉搜尋樹中序遍歷公升序 此題中為非降序 的性質,儲存中序字首節點,若當前節點與字首節點值相同,計數 1,若不同則重新從0開始計數。因為是非降序,所以一旦遍歷到了乙個更大的數...

501二叉搜尋樹中的眾數

給定乙個有相同值的二叉搜尋樹 bst 找出 bst 中的所有眾數 出現頻率最高的元素 假定 bst 有如下定義 例如 給定 bst 1,null,2,2 返回 2 bst中序遍歷是公升序序列,逐個比對當前結點 root 值與前驅結點 pre 值。更新當前節點值出現次數 curtimes 及最大出現次...

501 二叉搜尋樹中的眾數

給定乙個有相同值的二叉搜尋樹 bst 找出 bst 中的所有眾數 出現頻率最高的元素 假定 bst 有如下定義 例如 給定 bst 1,null,2,2 返回 2 高階 你可以不使用額外的空間嗎?假設由遞迴產生的隱式呼叫棧的開銷不被計算在內 因為二叉搜尋樹,中序遍歷的話得到的值是逐漸增加的,可以利用...