LeetCode简单题之二叉搜索树中的众数
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之二叉搜索树中的众数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給你一個含重復值的二叉搜索樹(BST)的根節點 root ,找出并返回 BST 中的所有 眾數(即,出現頻率最高的元素)。
如果樹中有不止一個眾數,可以按 任意順序 返回。
假定 BST 滿足如下定義:
結點左子樹中所含節點的值 小于等于 當前節點的值
結點右子樹中所含節點的值 大于等于 當前節點的值
左子樹和右子樹都是二叉搜索樹
示例 1:
輸入:root = [1,null,2,2]
輸出:[2]
示例 2:
輸入:root = [0]
輸出:[0]
提示:
樹中節點的數目在范圍 [1, 10^4] 內
-10^5 <= Node.val <= 10 ^5
來源:力扣(LeetCode)
解題思路
??二叉搜索樹的中序遍歷便是所以元素按照遞增順序排列的結果,當進行完中序遍歷后就能根據字典建立包含各個元素的頻率表,再按照頻率由高到低排序,最后找出頻率最高的一個或者幾個元素。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def findMode(self, root: TreeNode) -> List[int]:temp=[]def inorder(root):if root!=None:inorder(root.left)temp.append(root.val)inorder(root.right)inorder(root)d={}for i in temp:d[i]=d.get(i,0)+1item=list(d.items())item.sort(key=lambda x:-x[1])ans=[item[0][0]]for i,j in item[1:]:if j==item[0][1]:ans.append(i)return ans
總結
以上是生活随笔為你收集整理的LeetCode简单题之二叉搜索树中的众数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之键盘行
- 下一篇: LeetCode简单题之两句话中的不常见