?669. 修剪二叉搜索樹(Python)

題目

給定一個二叉搜索樹,同時給定最小邊界L 和最大邊界 R。通過修剪二叉搜索樹,使得所有節(jié)點的值在[L, R]中 (R>=L) 。你可能需要改變樹的根節(jié)點,所以結果應當返回修剪好的二叉搜索樹的新的根節(jié)點。

示例

示例 1

輸入:

    1
   / \
  0   2

L = 1
R = 2

輸出:

    1
      \
       2

示例 2

輸入:

    3
   / \
  0   4
   \
    2
   /
  1

L = 1
R = 3

輸出:

      3
     / 
   2   
  /
 1

解答

【參考官方答案】當node.val > R,那么修剪后的二叉樹必定出現(xiàn)在節(jié)點的左邊。類似地,當node.val < L,那么修剪后的二叉樹出現(xiàn)在節(jié)點的右邊。否則,我們將會修剪樹的兩邊。

class Solution(object):
    def trimBST(self, root, L, R):
        def trim(node):
            if not node:
                return None
            elif node.val > R:
                return trim(node.left)
            elif node.val < L:
                return trim(node.right)
            else:
                node.left = trim(node.left)
                node.right = trim(node.right)
                return node
        return trim(root)

如有疑問或建議,歡迎評論區(qū)留言~

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容