-2

I'm trying to get the size of tree of this code.

I know Size of a tree = Size of left subtree + 1 + Size of right subtree, but I do not know how to implement with this code.

I want to create a function called size after the program end I call this function to print the size of tree.

# Initial values of Alpha and Beta
MAX, MIN = 1000, -1000

# Returns optimal value for current player
#(Initially called for root and maximizer)
def minimax(depth, nodeIndex, maximizingPlayer,
            values, alpha, beta):

    # Terminating condition. i.e
    # leaf node is reached
    if depth == 3:
        return values[nodeIndex]

    if maximizingPlayer:
    
        best = MIN

        # Recur for left and right children
        for i in range(0, 2):
            
            val = minimax(depth + 1, nodeIndex * 2 + i,
                        False, values, alpha, beta)
            best = max(best, val)
            alpha = max(alpha, best)

            # Alpha Beta Pruning
            if beta <= alpha:
                break
        
        return best
    
    else:
        best = MAX

        # Recur for left and
        # right children
        for i in range(0, 2):
        
            val = minimax(depth + 1, nodeIndex * 2 + i,
                            True, values, alpha, beta)
            best = min(best, val)
            beta = min(beta, best)

            # Alpha Beta Pruning
            if beta <= alpha:
                break
        
        return best
    
# Driver Code
if __name__ == "__main__":

    values = [3, 5, 6, 9, 1, 2, 0, -1]
    print("The optimal value is :", minimax(0, 0, True, values, MIN, MAX))
    
# This code is contributed by Rituraj Jain

```
`

There is an example how to get the size of tree but I'm not sure how to implement with above code.

class Node:

Constructor to create a new node
def __init__(self, data):
self.data = data
self.left = None
self.right = None

Computes the number of nodes in tree

def size(node):
if node is None:
return 0
else:
return (size(node.left)+ 1 + size(node.right))

Driver program to test above function

root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left  = Node(4)
root.left.right = Node(5)

print("Size of the tree is %d" %(size(root)))
trincot
  • 317,000
  • 35
  • 244
  • 286
Go GO
  • 1
  • Please clarify your question! You state "I'm trying to get the size of tree of this code." Do you mean the tree that ```minmax``` code operates on? How is the tree defined? Please provide sample input with expected output. – itprorh66 Nov 04 '22 at 19:32

1 Answers1

0

The size of the tree is the number of nodes you have visited. Before your first call to the minimax function, initialize a variable, e.g. nodes = 0. Then at the top of your minimax function you increase this with nodes += 1. When minimax is done you can do whatever you want with it, print it or use it some analysis.

You can also put in other counters, e.g. how often it cut off in alpha/beta or how often you reach certain type of nodes.

eligolf
  • 1,682
  • 1
  • 6
  • 22