669. Trim a Binary Search Tree

原题地址:https://leetcode.com/problems/trim-a-binary-search-tree/description/
大意:修剪一个二叉搜索树。

什么是二叉搜索树? 来源wiki

669. Trim a Binary Search Tree_第1张图片
image

二叉查找树(英语:Binary Search Tree),也称为二叉搜索树有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:

  1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  3. 任意节点的左、右子树也分别为二叉查找树;
  4. 没有键值相等的节点。

从二叉搜索树的概念,可以看出,如果给定二叉搜索树的根节点为a,aR的话,就要把a和a的右子树全部砍掉,再用递归的方法,就可以很容易写出代码

# 669. Trim a Binary Search Tree

# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def trimBST(self, root, L, R):
        """
        :type root: TreeNode
        :type L: int
        :type R: int
        :rtype: TreeNode
        """
        if not root:
            return root
        if (root.val < L):
            return self.trimBST(root.right, L, R)
        if (root.val > R):
            return self.trimBST(root.left, L, R)
        root.left = self.trimBST(root.left, L, R)
        root.right = self.trimBST(root.right, L, R)
        return root




所有题目解题方法和答案代码地址:https://github.com/fredfeng0326/LeetCode

你可能感兴趣的:(669. Trim a Binary Search Tree)