亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python二叉搜索樹中第K小的元素是什么

發布時間:2021-12-13 16:11:57 來源:億速云 閱讀:187 作者:柒染 欄目:大數據

這篇文章給大家介紹python二叉搜索樹中第K小的元素是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

給定一個二叉搜索樹,編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。

說明:
你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜索樹元素個數。

示例 1:

輸入: root = [3,1,4,null,2], k = 1
  3
 / \
1   4
 \
   2
輸出: 1

示例 2:

輸入: root = [5,3,6,2,4,null,null,1], k = 3
      5
     / \
    3   6
   / \
  2   4
 /
1
輸出: 3

進階:
如果二叉搜索樹經常被修改(插入/刪除操作)并且你需要頻繁地查找第 k 小的值,你將如何優化 kthSmallest 函數?

解題思路:

1,這是一個中序遍歷加剪枝優化的題目

2,如果左子樹長度大于k,就不用遍歷右子樹了

3,在總結果中選第k個

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func kthSmallest(root *TreeNode, k int) int {    r:=mid(root,k)    return r[k-1]    }
func mid(root*TreeNode,k int)[]int{    var r [] int    if root==nil{        return r    }        l:=mid(root.Left,k)    if len(l)>=k{        return l    }    r=append(l,root.Val)        if len(l)+1>=k{        return r    }    rr:=mid(root.Right,k-len(l)-1)    r=append(r,rr...)    return r}

計算給定二叉樹的所有左葉子之和。

示例:

3
  / \
 9  20
   /  \
  15   7

在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24

解題思路:

1,如果是左葉子,則將當前節點加入和

2,計算當前節點的左、右子樹的左葉子和

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func sumOfLeftLeaves(root *TreeNode) int {    if root==nil{        return 0    }    if root.Left!=nil{        if root.Left.Left==nil&&root.Left.Right==nil{             return root.Left.Val + sumOfLeftLeaves(root.Right)        }          }   return sumOfLeftLeaves(root.Left)+ sumOfLeftLeaves(root.Right)}

關于python二叉搜索樹中第K小的元素是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松原市| 衡山县| 河间市| 双辽市| 旌德县| 织金县| 新巴尔虎左旗| 紫金县| 武城县| 固原市| 时尚| 望奎县| 汉川市| 祁东县| 齐齐哈尔市| 沈丘县| 嵊泗县| 德清县| 新沂市| 汪清县| 昌平区| 剑阁县| 商丘市| 河东区| 榕江县| 左权县| 玉龙| 义马市| 新平| 辉县市| 阿克陶县| 额济纳旗| 威信县| 泰顺县| 响水县| 涟源市| 自治县| 南召县| 荥阳市| 安义县| 河源市|