LeetCode
来源:互联网 发布:电影制作知乎 编辑:程序博客网 时间:2024/05/30 04:58
Q:
Given a binary search tree and the lowest and highest boundaries as L
and R
, trim the tree so that all its elements lies in [L, R] (R >= L)
. You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.
Example 1:
Input: 1 / \ 0 2 L = 1 R = 2Output: 1 \ 2
Example 2:
Input: 3 / \ 0 4 \ 2 / 1 L = 1 R = 3Output: 3 / 2 / 1
A:
# Definition for a binary tree node.class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution(object): def trimBST(self, root, L, R): """ :type root: TreeNode :type L: int :type R: int :rtype: TreeNode """ if not root: return None if root.val < L: return self.trimBST(root.right, L, R) elif 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
二叉搜索树,即二叉排序树,特点是 左子树所有节点的值均小于根节点的值,右子树所有节点的值均大于根节点的值。
此处,首先判断是否存在节点,若不存在直接返回None。然后当root.val小于L时,则左子树所有节点值均小于L,因此,舍弃左子树,递归遍历root的右子树;当root.val大于R时,则右子树所有节点值均大于R,因此,舍弃右子树,递归遍历root的左子树。
之后便是正常的左右子树递归遍历,返回root。
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- javascript权威指南(02)
- bzoj 5008: 方师傅的房子
- 实习笔记:uiscrollview与pagecontrol的综合应用
- App Inspector使用简介
- 如何进行Java开发
- LeetCode
- struts2三
- docker 笔记(1)
- Javascript物体运动(单物体运动)
- springMVC+CAs+shiro整合一 环境搭建下载CAS及导入idea中
- Tomcat 优化前后的性能对比
- Java8系列--并行流与并行流的性能测试
- 《机器学习》读书笔记 7 第5章 神经网络 二
- 修改Windows系统同步网络时间的频率