Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số nút trong một phạm vi bằng Python

Giả sử chúng ta có một BST và chúng ta cũng có các giới hạn bên trái và bên phải l và r, chúng ta phải tìm tổng số tất cả các nút trong gốc có giá trị nằm trong khoảng từ l đến r (bao gồm cả).

Vì vậy, nếu đầu vào giống như

Chương trình tìm số nút trong một phạm vi bằng Python

l =7, r =13, thì đầu ra sẽ là 3, vì có ba nút:8, 10, 12.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau−

  • stack:=một ngăn xếp và lúc đầu hãy chèn root, count:=0

  • trong khi ngăn xếp không trống, thực hiện

    • node:=phần tử trên cùng của ngăn xếp và phần tử pop

    • nếu nút không phải là null, thì

      • nếu l <=dữ liệu của nút <=r, thì

        • count:=count + 1

        • stack:=đẩy bên phải của nút và bên trái của nút vào ngăn xếp

      • ngược lại khi dữ liệu của nút

        • stack:=đẩy bên phải của nút vào ngăn xếp

        • nếu không,

        • stack:=đẩy bên trái của nút vào ngăn xếp

  • số lần trả lại

Ví dụ

 from collection import dequeclass TreeNode:def __init __ (self, data, left =None, right =None):self.data =data self.left =left self.right =rightclass Giải pháp:def giải (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  

Đầu vào

 root =TreeNode (12) root.left =TreeNode (8) root.right =TreeNode (15) root.left.left =TreeNode (3) root.left.right =TreeNode (10) 7,13  

Đầu ra

 3