5858 < div class ="body " role ="main ">
5959
6060 < h1 > Source code for example_code.graphs</ h1 > < div class ="highlight "> < pre >
61- < div class ="viewcode-block " id ="TreeNode "> < a class ="viewcode-back " href ="../../example_code.html#example_code.graphs.TreeNode "> [docs]</ a > < span > </ span > < span class ="k "> class</ span > < span class ="nc "> TreeNode</ span > < span class ="p "> :</ span >
62- < span class ="sd "> '''A basic tree implementation.</ span >
61+ < span > </ span > < span class ="sd "> """A simple tree implementation with basic pre- and post-visitors."""</ span >
6362
64- < span class ="sd "> Observe that a tree is simply a collection of connected TreeNodes.'''</ span >
63+
64+ < div class ="viewcode-block " id ="TreeNode "> < a class ="viewcode-back " href ="../../example_code.html#example_code.graphs.TreeNode "> [docs]</ a > < span class ="k "> class</ span > < span class ="nc "> TreeNode</ span > < span class ="p "> :</ span >
65+ < span class ="sd "> """A basic tree implementation.</ span >
66+
67+ < span class ="sd "> Observe that a tree is simply a collection of connected TreeNodes.</ span >
68+
69+ < span class ="sd "> Parameters</ span >
70+ < span class ="sd "> ----------</ span >
71+ < span class ="sd "> value:</ span >
72+ < span class ="sd "> An arbitrary value associated with this node.</ span >
73+ < span class ="sd "> children:</ span >
74+ < span class ="sd "> The TreeNodes which are the children of this node.</ span >
75+ < span class ="sd "> """</ span >
6576 < span class ="k "> def</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> value</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> children</ span > < span class ="p "> ):</ span >
66- < span class ="sd "> '''</ span >
67- < span class ="sd "> Parameters</ span >
68- < span class ="sd "> ----------</ span >
69- < span class ="sd "> value:</ span >
70- < span class ="sd "> An arbitrary value associated with this node.</ span >
71- < span class ="sd "> children:</ span >
72- < span class ="sd "> The TreeNodes which are the children of this node.</ span >
73- < span class ="sd "> '''</ span >
7477 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="o "> =</ span > < span class ="n "> value</ span >
7578 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="o "> =</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> children</ span > < span class ="p "> )</ span >
7679
7780 < span class ="k "> def</ span > < span class ="fm "> __repr__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
78- < span class ="k "> return</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __class__</ span > < span class ="o "> .</ span > < span class ="vm "> __name__</ span > < span class ="si "> }{</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="p "> ,)</ span > < span class ="o "> +</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
81+ < span class ="sd "> """Return the canonical string representation."""</ span >
82+ < span class ="k "> return</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="vm "> __name__</ span > < span class ="si "> }{</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="p "> ,)</ span > < span class ="o "> +</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
7983
8084 < span class ="k "> def</ span > < span class ="fm "> __str__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
85+ < span class ="sd "> """Serialise the tree recursively as parent -> (children)."""</ span >
8186 < span class ="n "> childstring</ span > < span class ="o "> =</ span > < span class ="s2 "> ", "</ span > < span class ="o "> .</ span > < span class ="n "> join</ span > < span class ="p "> (</ span > < span class ="nb "> map</ span > < span class ="p "> (</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="p "> ))</ span >
8287 < span class ="k "> return</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="si "> !s}</ span > < span class ="s2 "> -> (</ span > < span class ="si "> {</ span > < span class ="n "> childstring</ span > < span class ="si "> }</ span > < span class ="s2 "> )"</ span > </ div >
8388
8489
8590< div class ="viewcode-block " id ="previsitor "> < a class ="viewcode-back " href ="../../example_code.html#example_code.graphs.previsitor "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> previsitor</ span > < span class ="p "> (</ span > < span class ="n "> tree</ span > < span class ="p "> ,</ span > < span class ="n "> fn</ span > < span class ="p "> ,</ span > < span class ="n "> fn_parent</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ):</ span >
86- < span class ="sd "> ''' ;Traverse tree in preorder applying a function to every node.</ span >
91+ < span class ="sd "> """ ;Traverse tree in preorder applying a function to every node.</ span >
8792
8893< span class ="sd "> Parameters</ span >
8994< span class ="sd "> ----------</ span >
@@ -93,27 +98,25 @@ <h1>Source code for example_code.graphs</h1><div class="highlight"><pre>
9398< span class ="sd "> A function to be applied at each node. The function should take the</ span >
9499< span class ="sd "> node to be visited as its first argument, and the result of visiting</ span >
95100< span class ="sd "> its parent as the second.</ span >
96- < span class ="sd "> '''</ span >
97-
101+ < span class ="sd "> """</ span >
98102 < span class ="n "> fn_out</ span > < span class ="o "> =</ span > < span class ="n "> fn</ span > < span class ="p "> (</ span > < span class ="n "> tree</ span > < span class ="p "> ,</ span > < span class ="n "> fn_parent</ span > < span class ="p "> )</ span >
99103
100104 < span class ="k "> for</ span > < span class ="n "> child</ span > < span class ="ow "> in</ span > < span class ="n "> tree</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="p "> :</ span >
101105 < span class ="n "> previsitor</ span > < span class ="p "> (</ span > < span class ="n "> child</ span > < span class ="p "> ,</ span > < span class ="n "> fn</ span > < span class ="p "> ,</ span > < span class ="n "> fn_out</ span > < span class ="p "> )</ span > </ div >
102106
103107
104108< div class ="viewcode-block " id ="postvisitor "> < a class ="viewcode-back " href ="../../example_code.html#example_code.graphs.postvisitor "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> postvisitor</ span > < span class ="p "> (</ span > < span class ="n "> tree</ span > < span class ="p "> ,</ span > < span class ="n "> fn</ span > < span class ="p "> ):</ span >
105- < span class ="sd "> ''' ;Traverse tree in postorder applying a function to every node.</ span >
109+ < span class ="sd "> """ ;Traverse tree in postorder applying a function to every node.</ span >
106110
107111< span class ="sd "> Parameters</ span >
108112< span class ="sd "> ----------</ span >
109113< span class ="sd "> tree: TreeNode</ span >
110114< span class ="sd "> The tree to be visited.</ span >
111- < span class ="sd "> fn: ` function(node, *fn_children)` </ span >
115+ < span class ="sd "> fn: function(node, *fn_children)</ span >
112116< span class ="sd "> A function to be applied at each node. The function should take the</ span >
113117< span class ="sd "> node to be visited as its first argument, and the results of visiting</ span >
114118< span class ="sd "> its children as any further arguments.</ span >
115- < span class ="sd "> '''</ span >
116-
119+ < span class ="sd "> """</ span >
117120 < span class ="k "> return</ span > < span class ="n "> fn</ span > < span class ="p "> (</ span > < span class ="n "> tree</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="p "> (</ span > < span class ="n "> postvisitor</ span > < span class ="p "> (</ span > < span class ="n "> c</ span > < span class ="p "> ,</ span > < span class ="n "> fn</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> c</ span > < span class ="ow "> in</ span > < span class ="n "> tree</ span > < span class ="o "> .</ span > < span class ="n "> children</ span > < span class ="p "> ))</ span > </ div >
118121</ pre > </ div >
119122
0 commit comments