0
class Node:
    def __init__(self, data, parent):
        self.leftChild = None
        self.rightChild = None
        self.parent = parent
        self.data = data

class BST:

    def __init__(self):
        self.root = None
        self.count = 0


    def insert(self, data):
        self.count +=1
        if self.root is None:
            self.root = Node(data, None)
        else:
            self.insertNode(data,self.root)


    def insertNode(self, data, parentNode):
        if data < parentNode.data:
            if parentNode.leftChild is not None:
                self.insertNode(data, parentNode.leftChild)
            else:
                parentNode.leftChild = Node(data, parentNode)
        else:
            if parentNode.rightChild is not None:
                self.insertNode(data, parentNode.rightChild)
            else:
                parentNode.rightChild = Node(data, parentNode)


    def get_max(self, node):
        if node.rightChild:
            self.get_max(node.rightChild)
        else:
            print(node.data)
            # return node.data
        # return node.data


    def traverse(self):
        if(self.root is not None):
            self.traverse_InOrder(self.root)

    def traverse_InOrder(self, node):
        if node.leftChild is not None:
            self.traverse_InOrder(node.leftChild)
        print(node.data, end=" ")
        if node.rightChild is not None:
            self.traverse_InOrder(node.rightChild)

bst = BST()
bst.insert(22)
bst.insert(2)
bst.insert(21)
bst.insert(23)
bst.insert(45)
bst.insert(43)
bst.insert(20)
bst.traverse()
print()
bst.get_max(bst.root)
print(bst.get_max(bst.root))

In the get_max function when I'm printing node.data it's working fine, but as soon as I'm returning the data and trying to print it as shown in last line of code, it's returning none. I don't understand the underlying concept behind it. Maybe it is something that I'm doing wrong. Please explain.

1 Answer 1

1

Change the get_max function so it returns the rightmost node:

def get_max(self, node):
    if node.rightChild:
        return self.get_max(node.rightChild)
    else:
        return node.data
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you, I understood now.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.