LeetCode 二叉搜尋樹中的眾數(hash表)

2021-09-16 21:24:25 字數 1686 閱讀 6434

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

假定 bst 有如下定義:

結點左子樹中所含結點的值小於等於當前結點的值

結點右子樹中所含結點的值大於等於當前結點的值

左子樹和右子樹都是二叉搜尋樹

例如:

給定 bst [1,null,2,2],1\

2/2返回[2].

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

}return result;

}//中序遍歷二叉樹,統計各個數字出現的次數

void

dfs(treenode* root)

dfs(root-

>left)

; maxcnt =

max(maxcnt,

++numcntmap[root-

>val]);

//更新出現次數最多的次數

高階:充分利用二叉搜尋樹中序遍歷為遞增序列的特性,在中序遍歷的同時進行眾數的判定。(額外空間複雜度為o(1))

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//中序遍歷二叉樹,lastnum中序遍歷前乙個數字,cnt為前乙個數字出現的次數

void

dfs(treenode* root,

int&lastnum,

int&cnt)

//第一步:遍歷左子樹

dfs(root-

>left, lastnum, cnt)

;//第二步:訪問根節點

if(lastnum == root-

>val)

else

else

if(result.

size()

==0||(result.

back()

!= lastnum && maxcnt == cnt)

)//更新lastnum以及對應的cnt

lastnum = root-

>val;

cnt =1;

}//遍歷右子樹

LeetCode 二叉搜尋樹中的搜尋

給定二叉搜尋樹 bst 的根節點和乙個值。你需要在bst中找到節點值等於給定值的節點。返回以該節點為根的子樹。如果節點不存在,則返回 null。例如,給定二叉搜尋樹 4 2 7 1 3 和值 2 你應該返回如下子樹 2 1 3 在上述示例中,如果要找的值是 5,但因為沒有節點值為 5,我們應該返回 ...

leetcode 二叉樹 驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 ...

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...