Different ways of creating trees#

Different ways of creating trees using SuperNodes are presented below.

from supernodes import SuperNode

# Method 1: using `append`
root = SuperNode(name="root", value=0)
child_1 = SuperNode(name="child-1")
child_2 = SuperNode(name="child-2")
root.append(child_1)
root.append(child_2)

# Method 2: using += operator
root = SuperNode(name="root", value=0)
child_1 = SuperNode(name="child-1")
child_2 = SuperNode(name="child-2")
root += child_1
root += child_2

# Method 3: using `insert`
root = SuperNode(name="root", value=0)
child_1 = SuperNode(name="child-1")
child_2 = SuperNode(name="child-2")
root.insert(0, child_1)
root.insert(1, child_2)

# Method 4: using indexer
root = SuperNode(name="root", value=0)
root["child-1"] = SuperNode()
root["child-2"] = SuperNode()

# Method 5: using `split`
root = SuperNode(name="root", value=0)
root.split(num=2, names=["child-1", "child-2"])

# Method 6: from pandas DataFrame column
df = pd.DataFrame({"children": ["child-1", "child-2"]})
root = SuperNode(name="root", value=0)
root.split_on_df_column(df, column="children")