(Python)Given an array, construct a BST. Use the BST to find the predecessor q(Largest element, but no larger than q). Here is my code for finding predecessor q after constructing the BST. The problem is when q equals to one of the number in the BST, it does not return that number. For example, an array [47,25,23,81,59] with q = 81 should return 81. My program return 59.

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
Question

(Python)Given an array, construct a BST. Use the BST to find the predecessor q(Largest element, but no larger than q). Here is my code for finding predecessor q after constructing the BST. The problem is when q equals to one of the number in the BST, it does not return that number. For example, an array [47,25,23,81,59] with q = 81 should return 81. My program return 59.

 

def findPre(root, key):
if root is None:
return
if root.data == key:
if root.left is not None:
tmp = root.left
while tmp.right:
tmp = tmp.right
findPre.pre = tmp
if root.right is not None:
tmp = root.right
while tmp.left:
tmp = tmp.left
findPre.suc = tmp
return
if root.data < key:
findPre.pre = root
findPre(root.right, key)
numbers = readInfoText()
numbers.sort()|
root = sortedArrayToBST(numbers)
preOrder(root)
findPre.pre
= None
findPre(root, 81)
if findPre.pre is not None:
print("Pre ="«findPre.pre.data)
else:
print("No")
Transcribed Image Text:def findPre(root, key): if root is None: return if root.data == key: if root.left is not None: tmp = root.left while tmp.right: tmp = tmp.right findPre.pre = tmp if root.right is not None: tmp = root.right while tmp.left: tmp = tmp.left findPre.suc = tmp return if root.data < key: findPre.pre = root findPre(root.right, key) numbers = readInfoText() numbers.sort()| root = sortedArrayToBST(numbers) preOrder(root) findPre.pre = None findPre(root, 81) if findPre.pre is not None: print("Pre ="«findPre.pre.data) else: print("No")
47
25
23
81
59
= 59
Pre
Transcribed Image Text:47 25 23 81 59 = 59 Pre
Expert Solution
steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY