rdr-py / code / PreOrderTraversal.py
PreOrderTraversal.py
Raw
"""
*******************************************************
Owner: Ashutosh Jha
For: APPCAIR BITS Pilani Goa Campus, Reflexis Systems
Function Name: PreOrderTraversal
Takes root node as input and makes a consolidated data
frame which includes name, input condition, predicted
label and origin row. This function uses pre order 
traversal to access all nodes.
*******************************************************
"""
import pandas as pd

NodeSet_dict = {'Node Name':[],'Node input condition':[],'Node Predicted Label':[],'Node origin row no':[],'Node Left':[],
        'Node Right':[],'Node Feature Used':[],'Node Belongs':[]}
def PreOrderTraversal(root):
    if root:
        # First print the data of node 
        NodeSet_dict['Node Name'].append(root.name)
        NodeSet_dict['Node input condition'].append(root.inp_cond)
        NodeSet_dict['Node Predicted Label'].append(root.pred_label)
        NodeSet_dict['Node origin row no'].append(root.row_no)
        if(root.left != None):
            NodeSet_dict['Node Left'].append(root.left.name)
        else:
            NodeSet_dict['Node Left'].append("#")
        if(root.right != None):
            NodeSet_dict['Node Right'].append(root.right.name)
        else:
            NodeSet_dict['Node Right'].append("#")
        NodeSet_dict['Node Feature Used'].append(root.f_used)
        NodeSet_dict['Node Belongs'].append(False)
        # Then recur on left child 
        PreOrderTraversal(root.left) 
        # Finally recur on right child 
        PreOrderTraversal(root.right) 
    NodeSet  = pd.DataFrame(data=NodeSet_dict)
    return NodeSet