Python程序:查找指定范围内的节点数量
假设我们有一个二叉搜索树 (BST),以及左右边界l和r,我们需要找到根节点下所有值在l和r之间(包含l和r)的节点数量。
例如,

如果输入为l = 7, r = 13,则输出为3,因为存在三个节点:8、10、12。
为了解决这个问题,我们将遵循以下步骤:
stack := 一个栈,首先插入根节点;count := 0
当stack非空时,执行:
node := 栈顶元素,并弹出该元素
如果node非空,则:
如果l <= node的值 <= r,则
count := count + 1
stack := 将node的右子节点和左子节点压入栈中
否则,如果node的值 < l,则
stack := 将node的右子节点压入栈中
否则,
stack := 将node的左子节点压入栈中
返回count
示例
from collections import deque class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right class Solution: def solve(self, root, l, r): stack, count = [root], 0 while stack: node = stack.pop() if node: if l <= node.data <= r: count += 1 stack += [node.right, node.left] elif node.data < l: stack += [node.right] else: stack += [node.left] return count ob = Solution() root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) print(ob.solve(root, 7,13))
输入
root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) 7,13
输出
3
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP